services: postgres: image: postgres:17-alpine restart: unless-stopped environment: POSTGRES_DB: conduit POSTGRES_USER: conduit POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env} volumes: - conduit-postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U conduit -d conduit"] interval: 5s timeout: 3s retries: 10 server: image: ghcr.io/davidvanderklay/conduit-server:${CONDUIT_SERVER_VERSION:-${CONDUIT_VERSION:-latest}} restart: unless-stopped environment: DATABASE_URL: postgresql://conduit:${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}@postgres:5432/conduit BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET:?set BETTER_AUTH_SECRET in .env} BETTER_AUTH_URL: ${CONDUIT_URL:-http://localhost:8321} ADDON_ENCRYPTION_KEY: ${ADDON_ENCRYPTION_KEY:?set ADDON_ENCRYPTION_KEY in .env} WEB_ORIGIN: ${CONDUIT_URL:-http://localhost:8321} CONDUIT_BOOTSTRAP_MODE: ${CONDUIT_BOOTSTRAP_MODE:-setup-token} CONDUIT_BOOTSTRAP_TOKEN: ${CONDUIT_BOOTSTRAP_TOKEN-} TRUST_PROXY: ${TRUST_PROXY:-true} CONDUIT_UPDATE_TRACK: ${CONDUIT_UPDATE_TRACK:-stable} CONDUIT_UPDATE_CHECKS: ${CONDUIT_UPDATE_CHECKS:-true} TRAKT_CLIENT_ID: ${TRAKT_CLIENT_ID-} TRAKT_CLIENT_SECRET: ${TRAKT_CLIENT_SECRET-} SIMKL_CLIENT_ID: ${SIMKL_CLIENT_ID-} PORT: 3000 depends_on: postgres: condition: service_healthy healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1:3000/health"] interval: 10s timeout: 3s retries: 10 web: image: ghcr.io/davidvanderklay/conduit-web:${CONDUIT_WEB_VERSION:-${CONDUIT_VERSION:-latest}} restart: unless-stopped ports: - "${CONDUIT_BIND_ADDRESS:-127.0.0.1}:${CONDUIT_PORT:-8321}:8080" depends_on: server: condition: service_healthy volumes: conduit-postgres: