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