split docker compose file

This commit is contained in:
2025-03-27 13:34:17 +01:00
parent 6ec45fc9db
commit d94c558989
11 changed files with 143 additions and 105 deletions

View File

@@ -0,0 +1,7 @@
name: event-demo-dev
include:
- path:
- parts/docker-compose-external.yaml
- parts/docker-compose-tools.yaml
- parts/docker-compose-traefik.yaml
- envs/docker-compose-dev.yaml

View File

@@ -0,0 +1,8 @@
name: event-demo-prod
include:
- path:
- parts/docker-compose-external.yaml
- parts/docker-compose-tools.yaml
- parts/docker-compose-app.yaml
- parts/docker-compose-traefik.yaml
- envs/docker-compose-prod.yaml

View File

@@ -0,0 +1,5 @@
name: event-demo-test
include:
- path:
- parts/docker-compose-external.yaml
- parts/docker-compose-port.yaml

View File

@@ -1,105 +0,0 @@
name: event-demo
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
restart: no
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"
app:
build:
context: ../
dockerfile: docker/Dockerfile
ports:
- "8080:8080"
depends_on:
flyway:
condition: service_completed_successfully
postgresql:
condition: service_healthy
labels:
- "traefik.http.routers.app.rule=Host(`api.traefik.me`)"
- "traefik.http.services.app.loadbalancer.server.port=8080"
secrets:
pgadmin_password:
file: pgadmin.secret
postgresql_password:
file: postgresql.secret
volumes:
redis_data:
redisinsight_data:
postgresql_data:
pgadmin_data:

View File

@@ -0,0 +1,14 @@
services:
traefik:
ports:
- "81:80"
redis:
labels:
- "traefik.http.routers.redis.rule=Host(`redis.traefik.me`)"
- "traefik.http.services.redis.loadbalancer.server.port=8001"
pgadmin:
labels:
- "traefik.http.routers.pgadmin.rule=Host(`pgadmin.traefik.me`)"
- "traefik.http.services.pgadmin.loadbalancer.server.port=80"

View File

@@ -0,0 +1,14 @@
services:
traefik:
ports:
- "80:80"
redis:
labels:
- "traefik.http.routers.redis.rule=Host(`redis.traefik.me`)"
- "traefik.http.services.redis.loadbalancer.server.port=8001"
pgadmin:
labels:
- "traefik.http.routers.pgadmin.rule=Host(`pgadmin.traefik.me`)"
- "traefik.http.services.pgadmin.loadbalancer.server.port=80"

View File

@@ -0,0 +1,10 @@
services:
app:
build:
context: ../..
dockerfile: docker/Dockerfile
depends_on:
flyway:
condition: service_completed_successfully
postgresql:
condition: service_healthy

View File

@@ -0,0 +1,43 @@
services:
redis:
image: redis/redis-stack:7.4.0-v3
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
volumes:
- redis_data:/data
- redisinsight_data:/redisinsight
flyway:
image: flyway/flyway
command: migrate
depends_on:
postgresql:
condition: service_healthy
volumes:
- ../../migrations/events:/flyway/sql
- ../flyway.conf:/flyway/conf/flyway.conf
restart: no
postgresql:
image: postgres:17.4
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
secrets:
postgresql_password:
file: ../postgresql.secret
volumes:
redis_data:
redisinsight_data:
postgresql_data:

View File

@@ -0,0 +1,8 @@
services:
redis:
ports:
- "6379:6379"
postgresql:
ports:
- "5432:5432"

View File

@@ -0,0 +1,17 @@
services:
pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: $PGADMIN_DEFAULT_EMAIL
PGADMIN_DEFAULT_PASSWORD_FILE: /run/secrets/pgadmin_password
secrets:
- pgadmin_password
volumes:
- pgadmin_data:/var/lib/pgadmin
secrets:
pgadmin_password:
file: ../pgadmin.secret
volumes:
pgadmin_data:

View File

@@ -0,0 +1,17 @@
services:
traefik:
image: traefik:3.3.4
command:
- "--api.insecure=true"
- "--api.dashboard=true"
- "--providers.docker=true"
- "--log.level=DEBUG"
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