x-go-service-env: &go-service-env PORT: 8080 DATABASE_URL: postgres://${POSTGRES_USER:-fable}:${POSTGRES_PASSWORD:-fable_dev_password}@postgres:5432/${POSTGRES_DB:-fable}?sslmode=disable TOKEN_SECRET: ${TOKEN_SECRET:-local-dev-secret-change-me} TOKEN_TTL: ${TOKEN_TTL:-24h} services: postgres: image: postgres:17-alpine environment: POSTGRES_DB: ${POSTGRES_DB:-fable} POSTGRES_USER: ${POSTGRES_USER:-fable} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-fable_dev_password} ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./database/migrations:/docker-entrypoint-initdb.d:ro gateway: build: context: . dockerfile: apps/gateway/Dockerfile environment: GATEWAY_PORT: 3000 CORS_ORIGIN: "*" AUTH_SERVICE_URL: http://auth-service:8080 USER_SERVICE_URL: http://user-service:8080 CONTENT_SERVICE_URL: http://content-service:8080 TAXONOMY_SERVICE_URL: http://taxonomy-service:8080 SPEAKER_SERVICE_URL: http://speaker-service:8080 SUBSCRIPTION_SERVICE_URL: http://subscription-service:8080 NOTIFICATION_SERVICE_URL: http://notification-service:8080 COMMENT_SERVICE_URL: http://comment-service:8080 SEARCH_SERVICE_URL: http://search-service:8080 ANALYTICS_SERVICE_URL: http://analytics-service:8080 AUDIT_SERVICE_URL: http://audit-service:8080 MEDIA_SERVICE_URL: http://media-service:8080 ports: - "3000:3000" depends_on: - auth-service - user-service - content-service - taxonomy-service - speaker-service - subscription-service - notification-service - comment-service - search-service - analytics-service - audit-service - media-service web: build: context: . dockerfile: apps/web/Dockerfile ports: - "5173:80" depends_on: - gateway auth-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: auth environment: *go-service-env user-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: user environment: *go-service-env content-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: content environment: *go-service-env taxonomy-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: taxonomy environment: *go-service-env speaker-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: speaker environment: *go-service-env subscription-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: subscription environment: *go-service-env notification-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: notification environment: *go-service-env comment-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: comment environment: *go-service-env search-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: search environment: *go-service-env analytics-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: analytics environment: *go-service-env audit-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: audit environment: *go-service-env media-service: build: context: . dockerfile: infra/docker/go-service.Dockerfile args: SERVICE: media environment: *go-service-env volumes: postgres_data: