services: db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: ${AURUM_POSTGRES_USER:-aurum} POSTGRES_PASSWORD: ${AURUM_POSTGRES_PASSWORD:-aurum} POSTGRES_DB: ${AURUM_POSTGRES_DB:-aurum} volumes: - aurum_pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${AURUM_POSTGRES_USER:-aurum}"] interval: 5s timeout: 5s retries: 10 backend: build: ./backend restart: unless-stopped environment: AURUM_POSTGRES_USER: ${AURUM_POSTGRES_USER:-aurum} AURUM_POSTGRES_PASSWORD: ${AURUM_POSTGRES_PASSWORD:-aurum} AURUM_POSTGRES_DB: ${AURUM_POSTGRES_DB:-aurum} AURUM_POSTGRES_HOST: db AURUM_POSTGRES_PORT: 5432 AURUM_CORS_ORIGINS: ${AURUM_CORS_ORIGINS:-} AURUM_DEFAULT_CURRENCY: ${AURUM_DEFAULT_CURRENCY:-USD} # Free CoinGecko Demo key (coingecko.com/en/api/pricing) — the Crypto # tab's price sync 400s with a clear message until this is set. AURUM_COINGECKO_API_KEY: ${AURUM_COINGECKO_API_KEY:-} depends_on: db: condition: service_healthy web: build: ./frontend restart: unless-stopped ports: - "${AURUM_WEB_PORT:-3000}:80" environment: # Both unset = no login screen at all. See frontend/docker-entrypoint.d/20-basic-auth.sh. AURUM_BASIC_AUTH_USER: ${AURUM_BASIC_AUTH_USER:-} AURUM_BASIC_AUTH_PASSWORD: ${AURUM_BASIC_AUTH_PASSWORD:-} depends_on: - backend volumes: aurum_pgdata: