services: cloudflared: image: cloudflare/cloudflared:latest command: tunnel --no-autoupdate run --token ${CLOUDFLARE_TUNNEL_TOKEN} depends_on: - caddy restart: unless-stopped caddy: image: caddy:latest volumes: - ./deploy/caddy/Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config depends_on: - api - admin - public-react restart: unless-stopped api: build: ./src/Platform.Api environment: ASPNETCORE_ENVIRONMENT: Production ASPNETCORE_URLS: http://+:8080 ConnectionStrings__Default: Host=db;Database=platform;Username=platform;Password=${POSTGRES_PASSWORD} Jwt__Secret: ${JWT_SECRET} Redis__ConnectionString: redis:6379 depends_on: - db - redis restart: unless-stopped worker: build: ./src/Platform.Worker environment: DOTNET_ENVIRONMENT: Production ConnectionStrings__Default: Host=db;Database=platform;Username=platform;Password=${POSTGRES_PASSWORD} Redis__ConnectionString: redis:6379 depends_on: - db - redis restart: unless-stopped admin: build: ./src/platform-admin restart: unless-stopped public-react: build: ./src/platform-public-react restart: unless-stopped db: image: postgres:16 environment: POSTGRES_DB: platform POSTGRES_USER: platform POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data restart: unless-stopped redis: image: redis:7 restart: unless-stopped volumes: postgres_data: caddy_data: caddy_config: