88 lines
2.4 KiB
YAML
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: |