105 lines
3.2 KiB
YAML
105 lines
3.2 KiB
YAML
services:
|
|
web:
|
|
build:
|
|
context: .
|
|
dockerfile: frontend/Dockerfile
|
|
ports:
|
|
- '8080:8008/tcp'
|
|
restart: unless-stopped
|
|
labels:
|
|
- 'traefik.http.routers.web.rule=PathPrefix(`/`)'
|
|
- 'traefik.http.services.web.loadbalancer.server.port=8080'
|
|
|
|
api:
|
|
build:
|
|
context: .
|
|
dockerfile: backend/Dockerfile
|
|
ports:
|
|
- '3000:3000/tcp'
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./backend/.env:/app/.env
|
|
depends_on:
|
|
- db
|
|
- logging
|
|
labels:
|
|
- 'traefik.http.middlewares.api-prefix.stripprefix.prefixes=/api'
|
|
- 'traefik.http.routers.api.rule=PathPrefix(`/api`)'
|
|
- 'traefik.http.routers.api.middlewares=api-prefix'
|
|
- 'traefik.http.services.api.loadbalancer.server.port=3000'
|
|
|
|
db:
|
|
image: postgres:latest
|
|
environment:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: postgres
|
|
POSTGRES_DB: postgres
|
|
ports:
|
|
- '5431:5432'
|
|
restart: unless-stopped
|
|
volumes:
|
|
- dwengo_postgres_data:/var/lib/postgresql/data
|
|
|
|
idp: # Based on: https://medium.com/@fingervinicius/easy-running-keycloak-with-docker-compose-b0d7a4ee2358
|
|
image: quay.io/keycloak/keycloak:latest
|
|
volumes:
|
|
- ./config/idp:/opt/keycloak/data/import
|
|
environment:
|
|
KC_HOSTNAME: localhost
|
|
KC_HOSTNAME_PORT: 7080
|
|
KC_HOSTNAME_STRICT_BACKCHANNEL: 'true'
|
|
KC_BOOTSTRAP_ADMIN_USERNAME: admin
|
|
KC_BOOTSTRAP_ADMIN_PASSWORD: admin
|
|
KC_HEALTH_ENABLED: 'true'
|
|
KC_LOG_LEVEL: info
|
|
PROXY_ADDRESS_FORWARDING: 'true'
|
|
KC_HTTP_RELATIVE_PATH: '/idp'
|
|
command: [ 'start-dev', '--http-port', '7080', '--https-port', '7443', '--import-realm' ]
|
|
ports:
|
|
- '7080:7080'
|
|
- '7443:7443'
|
|
depends_on:
|
|
- db
|
|
labels:
|
|
- 'traefik.http.routers.idp.rule=PathPrefix(`/idp`)'
|
|
- 'traefik.http.services.idp.loadbalancer.server.port=7080'
|
|
|
|
reverse-proxy:
|
|
image: traefik:v3.3
|
|
command:
|
|
- '--api.insecure=true'
|
|
- '--providers.docker=true'
|
|
- '--providers.docker.exposedbydefault=true'
|
|
- '--entrypoints.web.address=:80/tcp'
|
|
ports:
|
|
- '9000:8080'
|
|
- '80:80/tcp'
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
- dwengo_letsencrypt:/letsencrypt:ro
|
|
|
|
logging:
|
|
image: grafana/loki:latest
|
|
ports:
|
|
- '9001:3102'
|
|
- '9095:9095'
|
|
volumes:
|
|
- ./config/loki/config.yml:/etc/loki/config.yaml
|
|
- dwengo_loki_data:/loki
|
|
command: -config.file=/etc/loki/config.yaml
|
|
restart: unless-stopped
|
|
|
|
dashboards:
|
|
image: grafana/grafana:latest
|
|
ports:
|
|
- '9002:3000'
|
|
volumes:
|
|
- dwengo_grafana_data:/var/lib/grafana
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
dwengo_postgres_data:
|
|
dwengo_letsencrypt:
|
|
dwengo_loki_data:
|
|
dwengo_grafana_data:
|