Files
deploy/docker-compose.yaml
2024-06-04 10:36:55 +02:00

169 lines
4.4 KiB
YAML

services:
keycloak:
image: hub.anxietyprime.de/swa-jodel/keycloak:latest
container_name: swa-keycloak
command: ["start-dev"]
env_file:
- ./.keycloak-env
environment:
KC_DB: postgres
KC_DB_SCHEMA: public
KC_DB_URL: jdbc:postgresql://keycloak-db/keycloak
#KC_HTTP_RELATIVE_PATH: /auth
PROXY_ADDRESS_FORWARDING: true
KC_PROXY: edge
KC_HOSTNAME_STRICT: false
KC_HTTP_ENABLED: true
expose:
- 8080
networks:
swa-public:
swa-keycloak:
ipv4_address: 10.42.0.3
swa-keycloak-db:
ipv4_address: 10.42.0.10
labels:
- "traefik.enable=true"
- "traefik.http.routers.keycloak.rule=Host(`keycloak.local.anxietyprime.de`)"
- "traefik.http.routers.keycloak.entrypoints=websecure"
- "traefik.http.routers.keycloak.tls.domains[0].main=keycloak.local.anxietyprime.de"
# - "traefik.http.routers.keycloak.tls.certresolver=letsencrypt"
- "traefik.http.services.keycloak.loadbalancer.server.port=8080"
- "traefik.http.routers.keycloak.service=keycloak"
healthcheck:
test: echo ""
interval: 5s
timeout: 5s
retries: 30
depends_on:
keycloak-db:
condition: service_healthy
restart: always
keycloak-db:
image: hub.anxietyprime.de/swa-jodel/keycloak-db:latest
container_name: swa-keycloak-db
env_file:
- ./.keycloak-env
volumes:
- ./keycloak-db/:/var/lib/postgresql/data
expose:
- 5432
networks:
swa-keycloak-db:
ipv4_address: 10.42.0.11
healthcheck:
test: pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB
start_period: 5s
interval: 5s
timeout: 5s
retries: 30
restart: always
frontend:
image: hub.anxietyprime.de/swa-jodel/frontend:latest
container_name: swa-frontend
expose:
- 80
networks:
swa-public:
labels:
- "traefik.enable=true"
- "traefik.http.routers.web-jodel.rule=Host(`jodel.local.anxietyprime.de`)"
- "traefik.http.routers.web-jodel.entrypoints=websecure"
- "traefik.http.routers.web-jodel.tls.domains[0].main=jodel.local.anxietyprime.de"
# - "traefik.http.routers.web-jodel.tls.certresolver=letsencrypt"
- "traefik.http.services.web-jodel.loadbalancer.server.port=80"
- "traefik.http.routers.web-jodel.service=web-jodel"
healthcheck:
test: echo ""
interval: 5s
timeout: 5s
retries: 30
depends_on:
backend:
condition: service_healthy
restart: always
backend:
image: hub.anxietyprime.de/swa-jodel/backend:latest
container_name: swa-backend
env_file:
- ./.backend-env
expose:
- 8080
networks:
swa-public:
swa-keycloak:
ipv4_address: 10.42.0.2
swa-database:
ipv4_address: 10.42.0.18
labels:
- "traefik.enable=true"
- "traefik.http.routers.api-jodel.rule=Host(`api.jodel.local.anxietyprime.de`)"
- "traefik.http.routers.api-jodel.entrypoints=websecure"
- "traefik.http.routers.api-jodel.tls.domains[0].main=api.jodel.local.anxietyprime.de"
# - "traefik.http.routers.api-jodel.tls.certresolver=letsencrypt"
- "traefik.http.services.api-jodel.loadbalancer.server.port=8080"
- "traefik.http.routers.api-jodel.service=api-jodel"
healthcheck:
test: echo ""
interval: 5s
timeout: 5s
retries: 30
depends_on:
keycloak:
condition: service_healthy
database:
condition: service_healthy
restart: always
database:
image: hub.anxietyprime.de/swa-jodel/database:latest
container_name: swa-database
env_file:
- ./.backend-env
volumes:
- ./backend-db/:/var/lib/postgresql/data
expose:
- 5432
networks:
swa-database:
ipv4_address: 10.42.0.19
healthcheck:
test: pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB
start_period: 5s
interval: 5s
timeout: 5s
retries: 30
restart: always
networks:
default:
external: false
swa-public:
external:
name: traefik
swa-keycloak:
name: swa-keycloak
ipam:
config:
- subnet: 10.42.0.0/29
internal: true
swa-keycloak-db:
name: swa-keycloak-db
ipam:
config:
- subnet: 10.42.0.8/29
internal: true
swa-database:
name: swa-database
ipam:
config:
- subnet: 10.42.0.16/29
internal: true