services: keycloak: container_name: baeldung-keycloak.openid-provider image: quay.io/keycloak/keycloak:26.4 command: - start-dev - --import-realm ports: - 8080:8080 volumes: - ./keycloak/:/opt/keycloak/data/import/ environment: KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD} KC_HTTP_PORT: 8080 KC_HOSTNAME_URL: http://localhost:8080 KC_HOSTNAME_ADMIN_URL: http://localhost:8080 KC_HOSTNAME_STRICT_BACKCHANNEL: true KC_HTTP_RELATIVE_PATH: / KC_HTTP_ENABLED: true KC_HEALTH_ENABLED: true KC_METRICS_ENABLED: true extra_hosts: - "host.docker.internal:host-gateway" healthcheck: test: ['CMD-SHELL', '[ -f /tmp/HealthCheck.java ] || echo "public class HealthCheck { public static void main(String[] args) throws java.lang.Throwable { System.exit(java.net.HttpURLConnection.HTTP_OK == ((java.net.HttpURLConnection)new java.net.URL(args[0]).openConnection()).getResponseCode() ? 0 : 1); } }" > /tmp/HealthCheck.java && java /tmp/HealthCheck.java http://localhost:8080/auth/health/live'] interval: 5s timeout: 5s retries: 20 postgres: image: postgres:16 container_name: frisbyee-postgres ports: - "5432:5432" environment: POSTGRES_DB: frisbyee POSTGRES_USER: frisbyee_user POSTGRES_PASSWORD: secret volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data: version: "3.9" postgres: image: postgres:16 container_name: frisbyee-postgres ports: - "5432:5432" environment: POSTGRES_DB: frisbyee POSTGRES_USER: frisbyee_user POSTGRES_PASSWORD: secret volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data: version: "3.9"