services: postgres: image: postgres:17-alpine environment: POSTGRES_DB: promview POSTGRES_USER: promview POSTGRES_PASSWORD: promview healthcheck: test: ["CMD-SHELL", "pg_isready -U promview -d promview"] interval: 2s timeout: 3s retries: 15 volumes: - postgres-data:/var/lib/postgresql/data migrate: build: . command: ["migrate"] depends_on: postgres: condition: service_healthy environment: &app-environment PROMVIEW_DATABASE_URL: postgres://promview:promview@postgres:5432/promview?sslmode=disable PROMVIEW_BOOTSTRAP_SOURCE_SLUG: demo PROMVIEW_BOOTSTRAP_SOURCE_NAME: Development Alertmanager PROMVIEW_BOOTSTRAP_SOURCE_TOKEN: development-token PROMVIEW_AUTH_MODE: ${PROMVIEW_AUTH_MODE:-open} PROMVIEW_OPEN_MODE_ROLE: ${PROMVIEW_OPEN_MODE_ROLE:-viewer} PROMVIEW_OPEN_MODE_AUTHOR: ${PROMVIEW_OPEN_MODE_AUTHOR:-promview-open-mode} PROMVIEW_OIDC_ISSUER_URL: ${PROMVIEW_OIDC_ISSUER_URL:-} PROMVIEW_OIDC_CLIENT_ID: ${PROMVIEW_OIDC_CLIENT_ID:-} PROMVIEW_OIDC_CLIENT_SECRET: ${PROMVIEW_OIDC_CLIENT_SECRET:-} PROMVIEW_OIDC_REDIRECT_URL: ${PROMVIEW_OIDC_REDIRECT_URL:-} PROMVIEW_OIDC_SCOPES: ${PROMVIEW_OIDC_SCOPES:-openid,profile,email,groups} PROMVIEW_OIDC_USERNAME_CLAIM: ${PROMVIEW_OIDC_USERNAME_CLAIM:-preferred_username} PROMVIEW_OIDC_EMAIL_CLAIM: ${PROMVIEW_OIDC_EMAIL_CLAIM:-email} PROMVIEW_OIDC_DISPLAY_NAME_CLAIM: ${PROMVIEW_OIDC_DISPLAY_NAME_CLAIM:-name} PROMVIEW_OIDC_GROUPS_CLAIM: ${PROMVIEW_OIDC_GROUPS_CLAIM:-groups} PROMVIEW_SESSION_COOKIE_SECURE: ${PROMVIEW_SESSION_COOKIE_SECURE:-true} PROMVIEW_LDAP_URL: ${PROMVIEW_LDAP_URL:-} PROMVIEW_LDAP_ISSUER: ${PROMVIEW_LDAP_ISSUER:-} PROMVIEW_LDAP_BIND_DN: ${PROMVIEW_LDAP_BIND_DN:-} PROMVIEW_LDAP_BIND_PASSWORD: ${PROMVIEW_LDAP_BIND_PASSWORD:-} PROMVIEW_LDAP_BASE_DN: ${PROMVIEW_LDAP_BASE_DN:-} PROMVIEW_LDAP_USER_FILTER: ${PROMVIEW_LDAP_USER_FILTER:-(uid=%s)} PROMVIEW_LDAP_GROUP_ATTRIBUTE: ${PROMVIEW_LDAP_GROUP_ATTRIBUTE:-memberOf} PROMVIEW_LDAP_GROUP_BASE_DN: ${PROMVIEW_LDAP_GROUP_BASE_DN:-} PROMVIEW_LDAP_GROUP_FILTER: ${PROMVIEW_LDAP_GROUP_FILTER:-(member=%s)} PROMVIEW_LDAP_GROUP_FORMAT: ${PROMVIEW_LDAP_GROUP_FORMAT:-cn} PROMVIEW_LDAP_START_TLS: ${PROMVIEW_LDAP_START_TLS:-false} # Local accounts need nothing declared here: they are created with # `docker compose run --rm app user create` once the stack is up. PROMVIEW_LOCAL_PASSWORD: ${PROMVIEW_LOCAL_PASSWORD:-} app: build: . depends_on: migrate: condition: service_completed_successfully environment: *app-environment ports: - "8080:8080" volumes: postgres-data: