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 版本升级到 18.0.2。
如果我使用 KC_FEATURES=admin2 作为进一步的环境变量,我可以看到一些东西,但仍然看不到管理控制台:
编辑 2:
如果我ENV KC_FEATURES=token-exchange为构建器添加 Dockerfile,我可以看到登录页面:
但登录后...总是空白页:
你的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)