services: postgres: image: postgres:latest environment: POSTGRES_USER: ${POSTGRES_USER:-sa} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} POSTGRES_DB: ${POSTGRES_DB:-socialize} ports: - "5433:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U sa -d socialize"] interval: 5s timeout: 5s retries: 20 api: build: context: . dockerfile: backend/src/Socialize.Api/Dockerfile environment: ASPNETCORE_ENVIRONMENT: ${ASPNETCORE_ENVIRONMENT:-Development} ASPNETCORE_URLS: http://0.0.0.0:8080 ConnectionStrings__PostgresConnection: Host=postgres;Port=5432;Database=${POSTGRES_DB:-socialize};Username=${POSTGRES_USER:-sa};Password=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} Website__FrontendBaseUrl: ${WEBSITE_FRONTEND_BASE_URL:-http://localhost:8080} Emailer__ApiKey: ${RESEND_API_KEY:-} Emailer__FromEmail: ${RESEND_FROM_EMAIL:-} Authentication__Jwt__Issuer: ${JWT_ISSUER:-http://localhost:8080} Authentication__Jwt__Audience: ${JWT_AUDIENCE:-socialize-local} Authentication__Jwt__Key: ${JWT_SIGNING_KEY:-socialize-dev-local-signing-key-please-change} Authentication__Jwt__Lifetime: ${JWT_LIFETIME:-00:05:00} Authentication__Jwt__RefreshTokenLifetime: ${JWT_REFRESH_TOKEN_LIFETIME:-0.00:30:00} depends_on: postgres: condition: service_healthy expose: - "8080" volumes: - api-blob-storage:/app/App_Data/blob-storage web: build: context: . dockerfile: frontend/Dockerfile depends_on: - api ports: - "8080:80" volumes: - ./deploy/caddy/Caddyfile:/etc/caddy/Caddyfile:ro volumes: api-blob-storage: