services: postgres: image: postgres:16.2 environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 10s timeout: 5s retries: 5 restart: always keycloak: image: quay.io/keycloak/keycloak:26.3.5 depends_on: postgres: condition: service_healthy environment: KC_DB: postgres KC_DB_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB} KC_DB_USERNAME: ${POSTGRES_USER} KC_DB_PASSWORD: ${POSTGRES_PASSWORD} KC_BOOTSTRAP_ADMIN_USERNAME: ${KEYCLOAK_ADMIN} KC_BOOTSTRAP_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD} KC_HOSTNAME: ${KC_HOSTNAME} KC_HTTP_ENABLED: "true" KC_HEALTH_ENABLED: "true" KC_PROXY_HEADERS: "xforwarded" command: start-dev restart: always volumes: postgres_data: