# compose.yml # Compose base name: ${COMPOSE_PROJECT_NAME:-suitecoffee} services: app: depends_on: db: condition: service_healthy tenants: condition: service_healthy healthcheck: test: ["CMD-SHELL", "curl -fsS http://localhost:${APP_PORT}/health || exit 1"] interval: 10s timeout: 3s retries: 10 start_period: 20s restart: unless-stopped auth: depends_on: db: condition: service_healthy ak: condition: service_started healthcheck: test: ["CMD-SHELL", "curl -fsS http://localhost:${AUTH_PORT}/health || exit 1"] interval: 10s timeout: 3s retries: 10 start_period: 15s restart: unless-stopped db: image: postgres:16 environment: TZ: America/Montevideo healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"] interval: 5s timeout: 3s retries: 20 start_period: 10s restart: unless-stopped tenants: image: postgres:16 environment: TZ: America/Montevideo healthcheck: test: ["CMD-SHELL", "pg_isready -U ${TENANTS_DB_USER} -d ${TENANTS_DB_NAME}"] interval: 5s timeout: 3s retries: 20 start_period: 10s restart: unless-stopped ak-db: image: postgres:16-alpine healthcheck: interval: 30s retries: 5 start_period: 20s test: - CMD-SHELL - pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER} timeout: 5s restart: unless-stopped ak-redis: image: redis:7-alpine healthcheck: interval: 30s retries: 5 start_period: 20s test: - CMD-SHELL - redis-cli ping | grep PONG timeout: 3s restart: unless-stopped ak: image: ghcr.io/goauthentik/server:latest depends_on: ak-db: condition: service_healthy ak-redis: condition: service_healthy restart: unless-stopped ak-worker: image: ghcr.io/goauthentik/server:latest depends_on: ak-db: condition: service_started ak-redis: condition: service_started restart: unless-stopped