services: db: image: postgres:17-alpine restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-wg} POSTGRES_USER: ${POSTGRES_USER:-wg} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD} volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 5s timeout: 5s retries: 20 networks: - wg app: build: . restart: unless-stopped depends_on: db: condition: service_healthy ports: - "${APP_PUBLISH_PORT:-8080}:8080" environment: APP_PORT: "8080" APP_URL: ${APP_URL:-http://localhost:8080} SITE_NAME: ${SITE_NAME:-Evilfox.cc} DATABASE_URL: postgres://${POSTGRES_USER:-wg}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB:-wg}?sslmode=disable SESSION_SECRET: ${SESSION_SECRET:?set SESSION_SECRET} ADMIN_USERNAME: ${ADMIN_USERNAME:-admin} ADMIN_EMAIL: ${ADMIN_EMAIL:-admin@evilfox.cc} ADMIN_PASSWORD: ${ADMIN_PASSWORD:?set ADMIN_PASSWORD} AUTO_IMPORT_MYSQL: ${AUTO_IMPORT_MYSQL:-true} MYSQL_DUMP_PATH: /data/wg.sql SECURE_COOKIES: ${SECURE_COOKIES:-false} TZ: ${TZ:-UTC} networks: - wg volumes: pgdata: networks: wg: driver: bridge