Fail at start - docker-compose - Class quarkus.properties not found in parent first load

Hi everyone,

I try to start the new version of Keycloak by editing my docker-compose.yml previously working with the jboss version. But the keycloak application doesn’t start. (I’m testing using a new fresh database for the test).

Here is the precise problem

2023-11-13 13:29:40,049 TRACE [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Class quarkus.properties not found in parent first load from java.net.URLClassLoader@130dca52
keycloak                | 
keycloak                | 2023-11-13 13:29:40,050 TRACE [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Class quarkus.properties not found in parent first load from java.net.URLClassLoader@130dca52
keycloak                | 
keycloak                | ERROR: Failed to run 'build' command.
keycloak                | ERROR: No value present

Here is my docker-compose.yml (the traefik conf is in another file and is not problematic)

version: "3.9"
services:

  postgres-keycloak-test:
    image: ${KEYCLOAK_POSTGRES_IMAGE_TAG}
    container_name: postgres-keycloak-test
    environment:
      POSTGRES_DB: ${KEYCLOAK_DB_NAME}
      POSTGRES_USER: ${KEYCLOAK_DB_USER}
      POSTGRES_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
    volumes:
      - keycloak-data-test:/var/lib/postgresql/data
      - /var/log/keycloak/postgres:/var/lib/postgresql/logs
    networks:
      - keycloak-network
    ports:
      - ":5432"
    healthcheck:
      test: [ "CMD", "pg_isready", "-q", "-d", "keycloak", "-U", "keycloak" ]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 60s
    restart: unless-stopped

  keycloak:
    build:
      context: .
      args:
        KEYCLOAK_VERSION: 22.0.0
    command: ['start-dev']
    container_name: keycloak
    environment:
      JAVA_OPTS_APPEND: -Dkeycloak.profile.feature.upload_scripts=enabled
      KC_DB_USERNAME: ${KEYCLOAK_DB_USER}
      KC_DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
      KC_DB_URL: jdbc:postgresql://postgres-keycloak-test:5432/${KEYCLOAK_DB_NAME}
      KC_HEALTH_ENABLED: 'true'
      KC_HTTP_ENABLED: 'true'
      KC_METRICS_ENABLED: 'true'
      KC_HOSTNAME_STRICT: 'false'
      KC_HOSTNAME: ${KEYCLOAK_HOSTNAME}
      KC_PROXY: edge
      KEYCLOAK_ADMIN: ${KEYCLOAK_USER}
      KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_PASSWORD}
      KC_LOG_LEVEL: debug
    networks:
      - keycloak-network
      - traefik-network
    ports:
      - ":8080"
    healthcheck:
      test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/8080' || exit 1
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 90s
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.keycloak.rule=Host(`${KEYCLOAK_HOSTNAME}`)"
      - "traefik.http.routers.keycloak.service=keycloak"
      - "traefik.http.routers.keycloak.entrypoints=websecure"
      - "traefik.http.services.keycloak.loadbalancer.server.port=8080"
      - "traefik.http.routers.keycloak.tls=true"
      - "traefik.http.routers.keycloak.tls.certresolver=myresolver"
      - "traefik.http.services.keycloak.loadbalancer.passhostheader=true"
      - "traefik.http.routers.keycloak.middlewares=compresstraefik"
      - "traefik.http.middlewares.compresstraefik.compress=true"
      - "traefik.docker.network=traefik-network"
    restart: unless-stopped
    depends_on:
      postgres-keycloak-test:
        condition: service_healthy

volumes:
  keycloak-data-test:
    driver: local
  keycloak-postgres-backup:
    driver: local
  keycloak-database-backups:
    driver: local

networks:
  traefik-network:
    external: true
  keycloak-network:
    external: true

Here is the log with mode detail after doing

 docker compose up -d 
docker compose logs -f

Here I use start-dev to be sure to have all logs in details but it also isn’t working with [‘start’, ‘–optimized’]

auser@localhost:/opt/keycloak$ docker compose logs -f
postgres-keycloak-test  | 
postgres-keycloak-test  | PostgreSQL Database directory appears to contain a database; Skipping initialization
keycloak                | Appending additional Java properties to JAVA_OPTS: -Dkeycloak.profile.feature.upload_scripts=enabled
postgres-keycloak-test  | 
postgres-keycloak-test  | 2023-11-13 13:29:07.111 UTC [1] LOG:  starting PostgreSQL 15.3 (Debian 15.3-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
postgres-keycloak-test  | 2023-11-13 13:29:07.121 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
postgres-keycloak-test  | 2023-11-13 13:29:07.122 UTC [1] LOG:  listening on IPv6 address "::", port 5432
postgres-keycloak-test  | 2023-11-13 13:29:07.131 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres-keycloak-test  | 2023-11-13 13:29:07.152 UTC [28] LOG:  database system was shut down at 2023-11-13 13:28:56 UTC
postgres-keycloak-test  | 2023-11-13 13:29:07.184 UTC [1] LOG:  database system is ready to accept connections
keycloak                | Updating the configuration and installing your custom providers, if any. Please wait.
keycloak                | The DelayedHandler was closed before any children handlers were configured. Messages will be written to stderr.
keycloak                | 2023-11-13 13:29:23,009 DEBUG [org.jboss.logging] (main) Logging Provider: org.jboss.logging.JBossLogManagerProvider
keycloak                | 
keycloak                | 2023-11-13 13:29:30,751 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[org.keycloak:keycloak-quarkus-server / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,763 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-vertx-http / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,764 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-security-runtime-spi / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,764 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-credentials / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,771 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus.arc:arc / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,772 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-mutiny / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,776 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.smallrye.reactive:mutiny / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,782 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-smallrye-context-propagation / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,783 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.smallrye:smallrye-context-propagation / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,785 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.smallrye:smallrye-context-propagation-api / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,785 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.smallrye:smallrye-context-propagation-storage / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,790 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.smallrye.reactive:mutiny-smallrye-context-propagation / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,792 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.smallrye.common:smallrye-common-vertx-context / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:30,796 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.vertx:vertx-core / runtime=true resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
.........
keycloak                | 
keycloak                | 2023-11-13 13:29:32,316 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[org.jboss.metadata:jboss-metadata-web / runtime=false resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:32,317 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-undertow-spi / runtime=false resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:32,320 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-micrometer-deployment / runtime=false resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:32,320 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-micrometer-registry-prometheus-deployment / runtime=false resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:32,321 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-logging-json-deployment / runtime=false resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:32,322 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[io.quarkus:quarkus-logging-gelf-deployment / runtime=false resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:32,326 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[org.keycloak:keycloak-quarkus-server-deployment / runtime=false resources=null] to QuarkusClassLoader Augmentation Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:36,881 DEBUG [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Adding elements io.quarkus.bootstrap.classloading.PathTreeClassPathElement[/ runtime=true resources=null] to QuarkusClassLoader Deployment Class Loader: PROD
keycloak                | 
keycloak                | 2023-11-13 13:29:36,970 DEBUG [io.quarkus.deployment.QuarkusAugmentor] (main) Beginning Quarkus augmentation
keycloak                | 
keycloak                | 2023-11-13 13:29:40,049 TRACE [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Class quarkus.properties not found in parent first load from java.net.URLClassLoader@130dca52
keycloak                | 
keycloak                | 2023-11-13 13:29:40,050 TRACE [io.quarkus.bootstrap.classloading.QuarkusClassLoader] (main) Class quarkus.properties not found in parent first load from java.net.URLClassLoader@130dca52
keycloak                | 
keycloak                | ERROR: Failed to run 'build' command.
keycloak                | ERROR: No value present
keycloak                | For more details run the same command passing the '--verbose' option. Also you can use '--help' to see the details about the usage of the particular command.
keycloak exited with code 1
keycloak                | Appending additional Java properties to JAVA_OPTS: -Dkeycloak.profile.feature.upload_scripts=enabled
keycloak                | Updating the configuration and installing your custom providers, if any. Please wait.

Thank you in advance for all possible idea or insight that will help me get this running.

did you get anywhere with this ?

Yes, ENV values where missing in my Dockerfile


ENV JAVA_OPTS_APPEND: -Dkeycloak.profile.feature.upload_scripts=enabled
ENV KC_DB=postgres
ENV KC_DB_USERNAME: ${KEYCLOAK_DB_USER}
ENV KC_DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
ENV KC_DB_URL: jdbc:postgresql://{KEYCLOAK_DB_CONTAINER_NAME}:{KEYCLOAK_DB_PORT}/${KEYCLOAK_DB_NAME}
ENV KC_HEALTH_ENABLED=true
ENV KC_METRICS_ENABLED=true
ENV KC_HTTP_ENABLED: 'true'
ENV KC_HOSTNAME_STRICT: 'false'
ENV KC_HOSTNAME: ${KEYCLOAK_HOSTNAME}
ENV KC_PROXY: reencrypt
ENV KEYCLOAK_ADMIN: ${KEYCLOAK_USER}
ENV KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_PASSWORD}