--- services: tasknote-web: container_name: tasknote-web depends_on: tasknote-api: condition: service_healthy image: ghcr.io/ricardo-campos-org/react-typescript-todolist/tasknote-web:candidate build: context: client dockerfile: Dockerfile ports: ["5000:5000"] environment: VITE_BACKEND_SERVER: http://localhost:8585 tasknote-api: container_name: tasknote-api depends_on: tasknote-db: condition: service_healthy environment: POSTGRES_DB: tasknote POSTGRES_HOST: tasknote-db POSTGRES_USER: tasknoteuser POSTGRES_PASSWORD: default POSTGRES_PORT: 5432 CORS_ALLOWED_ORIGINS: http://tasknote-web:5000, http://localhost:5000 SERVER_SERVLET_CONTEXT_PATH: / TARGET_ENV: development SECURITY_KEY: this-is-a-very-long-security-key-for-dev MAILGUN_APIKEY: invalid-api-key-only-placeholder ports: ["8585:8585"] image: ghcr.io/ricardo-campos-org/react-typescript-todolist/tasknote-api:candidate build: context: server dockerfile: Dockerfile tasknote-db: container_name: tasknote-db image: postgres:15.8-bookworm environment: POSTGRES_DB: tasknote POSTGRES_USER: tasknoteuser POSTGRES_PASSWORD: default ports: ["5432:5432"] healthcheck: test: psql -q -U $${POSTGRES_USER} -d $${POSTGRES_DB} -c 'SELECT 1' interval: 1m30s timeout: 15s retries: 3 start_period: 10s