Keycloak is failing to start in docker container

During the work with the latest version of keycloak, I had a problem with loading the image.
docker-compose.yaml

version: '3.8'

services:

  keycloak-postgres:
    image: postgres:13
    env_file:
      - keycloak-pg.env
    deploy:
      resources:
        limits:
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M
    volumes:
      - postgres_data_keycloak:/var/lib/postgresql/data
    networks:
      - keycloak

  keycloak:
    build:
      context: ../../
      dockerfile: installation/dev/Dockerfile
    env_file:
      - keycloak.env
    volumes:
      - ./config/cache-ispn.xml:/opt/keycloak/conf/cache-ispn.xml
      - ./config/keycloak.conf:/opt/keycloak/conf/keycloak.conf
    deploy:
      resources:
        limits:
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M
    depends_on:
      - keycloak-postgres
    ports:
      - '8080:8080'
    networks:
      - keycloak
networks:
  keycloak:

volumes:
  postgres_data_keycloak:
    driver: local

dockerfile

ENV HOME /opt/keycloak
ENV THEMES_HOME $HOME/themes/base/admin

RUN mkdir /opt/keycloak/keys

COPY build/resources/main/theme/base/admin/resources/partials /opt/keycloak/themes/base/admin/resources/partials
COPY build/resources/main/theme/base/admin/messages/ $THEMES_HOME/messages

RUN cat /opt/keycloak/themes/base/admin/messages/admin-messages_en.custom >> /opt/keycloak/themes/base/admin/messages/admin-messages_en.properties
RUN cat /opt/keycloak/themes/base/admin/messages/admin-messages_ru.custom >> /opt/keycloak/themes/base/admin/messages/admin-messages_ru.properties


ENTRYPOINT ["/opt/keycloak/bin/kc.sh", "-v start --optimized" ]

env

KC_DB=POSTGRES
KC_DB_URL_HOST=keycloak-postgres
KC_DB_URL_DATABASE=keycloak
KC_DB_USERNAME=keycloak
KC_DB_SCHEMA=public
KC_DB_PASSWORD=keycloak
KC_LOG_LEVEL=INFO
KC_PROXY="true"
KEYCLOAK_ADMIN=admin
KEYCLOAK_ADMIN_PASSWORD=admin
JAVA_OPTS_APPEND="-server -Xms2048m -Xmx4096m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true"

keycloak.conf

cache=ispn
hostname-strict=false
http-enabled=true
http-relative-path=/auth

cache infinispan

<?xml version="1.0" encoding="UTF-8"?>
<infinispan
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:infinispan:config:11.0 http://www.infinispan.org/schemas/infinispan-config-11.0.xsd"
        xmlns="urn:infinispan:config:11.0">

    <cache-container name="keycloak" module="org.keycloak.keycloak-model-infinispan">
        <local-cache name="realms">
            <object-memory size="100000"/>
        </local-cache>
        <local-cache name="users">
            <object-memory size="100000"/>
        </local-cache>
        <local-cache name="sessions"/>
        <local-cache name="authenticationSessions"/>
        <local-cache name="offlineSessions"/>
        <local-cache name="clientSessions"/>
        <local-cache name="offlineClientSessions"/>
        <local-cache name="loginFailures"/>
        <local-cache name="work"/>
        <local-cache name="authorization">
            <object-memory size="10000"/>
        </local-cache>
        <local-cache name="keys">
            <object-memory size="1000"/>
            <expiration max-idle="3600000"/>
        </local-cache>
        <local-cache name="actionTokens">
            <object-memory size="-1"/>
            <expiration interval="300000" max-idle="-1"/>
        </local-cache>
    </cache-container>
    <cache-container name="server" default-cache="default">
        <local-cache name="default">
            <transaction mode="BATCH"/>
        </local-cache>
    </cache-container>
    <cache-container name="web" default-cache="passivation" >
        <local-cache name="passivation">
            <locking isolation="REPEATABLE_READ"/>
            <transaction mode="BATCH"/>
            <file-store passivation="true" purge="false"/>
        </local-cache>
        <local-cache name="sso">
            <locking isolation="REPEATABLE_READ"/>
            <transaction mode="BATCH"/>
        </local-cache>
        <local-cache name="routing"/>
    </cache-container>
    <cache-container name="ejb" aliases="sfsb" default-cache="passivation" >
        <local-cache name="passivation">
            <locking isolation="REPEATABLE_READ"/>
            <transaction mode="BATCH"/>
            <file-store passivation="true" purge="false"/>
        </local-cache>
    </cache-container>
    <cache-container name="hibernate" module="org.infinispan.hibernate-cache">
        <local-cache name="entity">
            <object-memory size="10000"/>
            <expiration max-idle="100000"/>
        </local-cache>
        <local-cache name="local-query">
            <object-memory size="10000"/>
            <expiration max-idle="100000"/>
        </local-cache>
        <local-cache name="timestamps"/>
    </cache-container>
</infinispan>

Iā€™m getting an error while starting the container

Feb 20, 2023 1:44:11 PM org.hibernate.resource.beans.container.spi.AbstractCdiBeanContainer stop
 INFO: HHH10005004: Stopping BeanContainer : %s
 ERROR: Failed to start server in (production) mode
 Error details:
 io.quarkus.runtime.configuration.ConfigurationException: One or more configuration errors have prevented the application from starting. The errors are:
   - No value present
   - No value present

what configs i have lost?
thanks.

1 Like