Files
event-demo/docker/docker-compose.yaml
2025-04-14 23:40:04 +02:00

88 lines
2.4 KiB
YAML

services:
traefik:
image: traefik:3.3.4
container_name: "traefik"
command:
- "--api.insecure=true"
- "--api.dashboard=true"
- "--providers.docker=true"
- "--log.level=DEBUG"
ports:
- "80:80"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=Host(`dashboard.traefik.me`)"
- "traefik.http.services.api.loadbalancer.server.port=8080"
- "traefik.http.routers.api.service=api@internal"
- "traefik.http.routers.api.middlewares=api-auth"
- "traefik.http.middlewares.api-auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/" # test:test
redis:
image: redis/redis-stack:7.4.0-v3
ports:
- "6379:6379"
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
volumes:
- redis_data:/data
- redisinsight_data:/redisinsight
labels:
- "traefik.http.routers.redis.rule=Host(`redis.traefik.me`)"
- "traefik.http.services.redis.loadbalancer.server.port=8001"
flyway:
image: flyway/flyway
container_name: "flyway"
command: migrate
depends_on:
postgresql:
condition: service_healthy
volumes:
- ../migrations/events:/flyway/sql
- ./flyway.conf:/flyway/conf/flyway.conf
postgresql:
image: postgres:17.4
container_name: "postgresql"
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/postgresql_password
POSTGRES_USER: event-demo
secrets:
- postgresql_password
healthcheck:
test: ["CMD-SHELL", "sh -c 'pg_isready -U event-demo'"]
interval: 1s
timeout: 5s
retries: 10
volumes:
- postgresql_data:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4
container_name: "pgadmin"
environment:
PGADMIN_DEFAULT_EMAIL: $PGADMIN_DEFAULT_EMAIL
PGADMIN_DEFAULT_PASSWORD_FILE: /run/secrets/pgadmin_password
secrets:
- pgadmin_password
volumes:
- pgadmin_data:/var/lib/pgadmin
labels:
- "traefik.http.routers.pgadmin.rule=Host(`pgadmin.traefik.me`)"
- "traefik.http.services.pgadmin.loadbalancer.server.port=80"
secrets:
pgadmin_password:
file: pgadmin.secret
postgresql_password:
file: postgresql.secret
volumes:
redis_data:
redisinsight_data:
postgresql_data:
pgadmin_data: