为什么我看到 Keycloak 管理控制台的空白页面?

Kam*_*bei 7 docker keycloak docker-compose quarkus

我使用 Dockerfile 创建 Keycloak 的自定义映像,如下所示:

FROM quay.io/keycloak/keycloak:18.0.2 as builder

ENV KC_HEALTH_ENABLED=true
ENV KC_METRICS_ENABLED=true
ENV KC_DB=postgres
# Install custom providers
RUN curl -sL https://github.com/aerogear/keycloak-metrics-spi/releases/download/2.5.3/keycloak-metrics-spi-2.5.3.jar -o /opt/keycloak/providers/keycloak-metrics-spi-2.5.3.jar
RUN /opt/keycloak/bin/kc.sh build

FROM quay.io/keycloak/keycloak:18.0.2
COPY --from=builder /opt/keycloak/ /opt/keycloak/
WORKDIR /opt/keycloak
ENTRYPOINT ["/opt/keycloak/bin/kc.sh", "start"]
Run Code Online (Sandbox Code Playgroud)

通过这个 docker-compose 我可以运行 Keycloak:

version: "3.9"
services:

  keycloak_db:
    image: postgres
    environment:
      - POSTGRES_USER=$DB_USER
      - POSTGRES_PASSWORD=$DB_PASS
      - POSTGRES_DB=$DB_NAME
      - IGNORE_INIT_HOOK_LOCKFILE=true
    volumes:
      - ./db/:/docker-entrypoint-initdb.d/
    ports:
      - ${DB_EXTERNAL_PORT:-15432}:5432

  keycloak:
    container_name: keycloak
    # image: quay.io/keycloak/keycloak:18.0.1
    image: keycloak
    ports:
      - "${KEYCLOAK_EXTERNAL_PORT:-18180}:8080"
    environment:
      - KEYCLOAK_ADMIN=${KEYCLOAK_USER}
      - KEYCLOAK_ADMIN_PASSWORD=${KEYCLOAK_PASSWORD}
      - KC_DB=postgres
      - KC_DB_URL_HOST=$DB_HOST
      - KC_DB_URL_PORT=5432
      - KC_DB_URL_DATABASE=$DB_NAME
      - KC_DB_SCHEMA=$KEYCLOAK_SCHEMA
      - KC_DB_USERNAME=$DB_USER
      - KC_DB_PASSWORD=$DB_PASS
      - KC_HTTP_ENABLED=true
      - KC_HOSTNAME=localhost
      - KC_HOSTNAME_ADMIN=localhost
      - KC_HOSTNAME_PORT=80
      - KC_HOSTNAME_STRICT_BACKCHANNEL=true
      - KC_HOSTNAME_STRICT_HTTPS=false
      - KC_PROXY=edge
      - KC_PROXY_ADDRESS_FORWARDING=true
      - KC_KEYCLOAK_FRONTEND_URL=http://localhost:18180/
      - KC_KEYCLOAK_URL=http://localhost:18180/
      # - KC_LOG_LEVEL=debug
    depends_on:
      - keycloak_db
Run Code Online (Sandbox Code Playgroud)

我可以看到Keycloak主页: 在此输入图像描述

但是当我尝试进入管理控制台时,我看到一个空白页面: 在此输入图像描述


出了什么问题?




编辑: 我将 Keycloak 版本升级到 18.0.2。

如果我使用 KC_FEATURES=admin2 作为进一步的环境变量,我可以看到一些东西,但仍然看不到管理控制台:

在此输入图像描述


编辑 2: 如果我ENV KC_FEATURES=token-exchange为构建器添加 Dockerfile,我可以看到登录页面:

在此输入图像描述

但登录后...总是空白页:

在此输入图像描述

F. *_*ini 3

你的KC_HOSTNAME_PORT可能是不正确的。如果KEYCLOAK_EXTERNAL_PORT设置为 18180 并且您不在反向代理后面,则应设置KC_HOSTNAME_PORT为 18180。

此配置正在运行:

 keycloak:
    container_name: keycloak
    # image: quay.io/keycloak/keycloak:18.0.1
    image: keycloak
    ports:
      - "${KEYCLOAK_EXTERNAL_PORT:-18180}:8080"
    environment:
      - KEYCLOAK_ADMIN=${KEYCLOAK_USER}
      - KEYCLOAK_ADMIN_PASSWORD=${KEYCLOAK_PASSWORD}
      - KC_DB=postgres
      - KC_DB_URL_HOST=$DB_HOST
      - KC_DB_URL_PORT=5432
      - KC_DB_URL_DATABASE=$DB_NAME
      - KC_DB_SCHEMA=$KEYCLOAK_SCHEMA
      - KC_DB_USERNAME=$DB_USER
      - KC_DB_PASSWORD=$DB_PASS
      - KC_HTTP_ENABLED=true
      - KC_HOSTNAME=localhost
      - KC_HOSTNAME_ADMIN=localhost
      - KC_HOSTNAME_PORT=18080
      - KC_HOSTNAME_STRICT_BACKCHANNEL=true
      - KC_HOSTNAME_STRICT_HTTPS=false
      - KC_PROXY=edge
      - KC_PROXY_ADDRESS_FORWARDING=true
      - KC_KEYCLOAK_FRONTEND_URL=http://localhost:18180/
      - KC_KEYCLOAK_URL=http://localhost:18180/
      # - KC_LOG_LEVEL=debug
    depends_on:
      - keycloak_db
Run Code Online (Sandbox Code Playgroud)