services: postgres: image: postgres:17-alpine environment: POSTGRES_DB: ${POSTGRES_DB:-beacon} POSTGRES_USER: ${POSTGRES_USER:-beacon} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-beacon} ports: ["5432:5432"] volumes: ["postgres_data:/var/lib/postgresql/data"] healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 5s timeout: 5s retries: 10 app: build: . environment: APP_NAME: Beacon APP_URL: http://localhost:3000 BETTER_AUTH_URL: http://localhost:3000 BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET:?Set BETTER_AUTH_SECRET in .env} DATABASE_URL: postgresql://${POSTGRES_USER:-beacon}:${POSTGRES_PASSWORD:-beacon}@postgres:5432/${POSTGRES_DB:-beacon} LOG_LEVEL: info ports: ["3000:3000"] depends_on: postgres: { condition: service_healthy } volumes: postgres_data: