services: postgres: image: postgres:16-alpine container_name: oidc-postgres restart: unless-stopped environment: POSTGRES_DB: ${OIDC_DATABASE_NAME:-oidc} POSTGRES_USER: ${OIDC_DATABASE_USER:-oidc} POSTGRES_PASSWORD: ${OIDC_DATABASE_PASSWORD:-oidc_secret} 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 redis: image: redis:7-alpine container_name: oidc-redis restart: unless-stopped volumes: - redis_data:/data command: ["redis-server", "--appendonly", "yes"] healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 10 app: image: ${OIDC_IMAGE:-ghcr.io/luotianyi-0712/openoidc:latest} container_name: oidc-app restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_healthy ports: - "${OIDC_SERVER_PORT:-8080}:8080" environment: OIDC_SERVER_HOST: "0.0.0.0" OIDC_SERVER_PORT: "8080" OIDC_SERVER_ISSUER: "${OIDC_SERVER_ISSUER:-http://localhost:8080}" OIDC_SERVER_PUBLIC_URL: "${OIDC_SERVER_PUBLIC_URL:-http://localhost:8080}" OIDC_DATABASE_DRIVER: "postgres" OIDC_DATABASE_HOST: "postgres" OIDC_DATABASE_PORT: "5432" OIDC_DATABASE_USER: "${OIDC_DATABASE_USER:-oidc}" OIDC_DATABASE_PASSWORD: "${OIDC_DATABASE_PASSWORD:-oidc_secret}" OIDC_DATABASE_NAME: "${OIDC_DATABASE_NAME:-oidc}" OIDC_DATABASE_SSLMODE: "disable" OIDC_REDIS_HOST: "redis" OIDC_REDIS_PORT: "6379" OIDC_REDIS_PASSWORD: "${OIDC_REDIS_PASSWORD:-}" OIDC_REDIS_DB: "${OIDC_REDIS_DB:-0}" OIDC_ADMIN_EMAIL: "${OIDC_ADMIN_EMAIL:-admin@example.com}" OIDC_ADMIN_PASSWORD: "${OIDC_ADMIN_PASSWORD:-change_me_now}" OIDC_SECRETS_CLIENT_SECRET_ENCRYPTION_KEY: "${OIDC_SECRETS_CLIENT_SECRET_ENCRYPTION_KEY:-dev-client-secret-encryption-key}" OIDC_SESSION_COOKIE_SECURE: "${OIDC_SESSION_COOKIE_SECURE:-false}" OIDC_LOG_LEVEL: "${OIDC_LOG_LEVEL:-info}" OIDC_LOG_FORMAT: "${OIDC_LOG_FORMAT:-json}" volumes: postgres_data: redis_data: