services: api: build: context: . dockerfile: Dockerfile restart: unless-stopped depends_on: postgres: condition: service_healthy environment: PORT: 8080 MIGRATE_ON_STARTUP: ${MIGRATE_ON_STARTUP:?set MIGRATE_ON_STARTUP} DATABASE_HOST: ${DATABASE_HOST:?set DATABASE_HOST} DATABASE_PORT: ${DATABASE_PORT:?set DATABASE_PORT} DATABASE_NAME: ${DATABASE_NAME:?set DATABASE_NAME} DATABASE_USER: ${DATABASE_USER:?set DATABASE_USER} DATABASE_PASSWORD: ${DATABASE_PASSWORD:?set DATABASE_PASSWORD} ports: - "${API_BIND_ADDRESS:?set API_BIND_ADDRESS}:${API_PORT:?set API_PORT}:8080" postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:?set POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER:?set POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: [ "CMD-SHELL", "pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\"" ] interval: 10s timeout: 5s retries: 5 start_period: 10s volumes: postgres_data: