You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Docker Swarm集群部署/迁移Keycloak时遇执行错误求助

Docker Swarm部署Keycloak遇到的两个问题

问题1:执行build命令失败

部署时触发build命令报错:

ERROR: Failed to execute the 'build' command. ERROR: No value present

问题2:Keycloak迁移时日志报错信息不明确

计划迁移Keycloak,但服务日志无法提供足够定位问题的有效信息。

当前配置文件

docker-compose.yml

version: '3.8'
services:
  keycloak:
    image: registry.ccms-capgemini.fr/keycloak/keycloak:20.0
    deploy:
      replicas: 1
    # entrypoint: /opt/keycloak/bin/kc.sh start --auto-build
    command:
    - start
    environment:
      KC_HOSTNAME: ${KCLNAME}
      KC_HOSTNAME_PORT: ${DBPORT}
      KC_HOSTNAME_STRICT_HTTPS: "false"
      KC_DB: ${DBV}
      KC_DB_NAME: ${DBNAME}
      KC_DB_URL: ${DBHOST}
      KC_DB_USERNAME: ${DBUSER}
      KC_DB_PASSWORD: ${DBPASSWORD}
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: admin
      KC_HEALTH_ENABLED: "true"
      KC_METRICS_ENABLED: "true"
      KC_LOG_LEVEL: ${KCLKLOG}
      KC_DB_SCHEMA: public
      KC_HTTPS_CLIENT_AUTH: request
      KC_HTTPS_PROTOCOLS: TLSv1.3,TLSv1.2
      KC_FEATURES:
          authorization
          token-exchange
          docker
          impersonation
          scripts
          upload-scripts
          web-authn
          client-policies
          dynamic-scopes
    volumes:
      - ./configs/keycloak/conf:/opt/keycloak/conf
      - ./configs/keycloak/keystore:/opt/keycloak/conf/server.keystore
      - ./configs/keycloak/datas:/opt/keycloak/data/import
    ports:
      - "8098:8080"

.env文件

DBV=POSTGRES

DBNAME=keycloak

DBUSER=keycloak

DBPASSWORD=xxxxxxxxxxxxxxxxxxxx

KCLNAME=load_balancer_url

DBHOST=RDS_db_url

DBPORT=5432

PAF=true

KCLKLOG=INFO

JTO=-Dkeycloak.profile.feature.admin_fine_grained_authz=enabled

已尝试操作

  • 测试多种部署命令组合
  • 手动展开环境变量后执行部署
  • 调整entrypoint配置(当前已注释)

问题排查建议

针对build命令失败问题

  1. 确保环境变量加载:Docker Swarm部署时,必须通过--env-file .env参数指定环境变量文件,否则变量无法被注入到服务中。
  2. 删除重复环境变量:docker-compose.yml中KEYCLOAK_ADMIN被重复定义两次,删除其中一个冗余项。
  3. 修正KC_FEATURES格式:Keycloak要求KC_FEATURES为逗号分隔的字符串,而非多行列表,修改为:
    KC_FEATURES: "authorization,token-exchange,docker,impersonation,scripts,upload-scripts,web-authn,client-policies,dynamic-scopes"
    
  4. 调整DB_URL格式:PostgreSQL的KC_DB_URL需符合JDBC规范,格式应为jdbc:postgresql://RDS_db_url:5432/keycloak,需修正.env中的DBHOST值。
  5. 验证镜像可访问性:确认Swarm所有节点都能正常拉取registry.ccms-capgemini.fr/keycloak/keycloak:20.0镜像,排查私有仓库权限或网络问题。

针对迁移日志不明确问题

  1. 提升日志级别:将KC_LOG_LEVEL从INFO改为DEBUG,获取更详细的迁移过程日志。
  2. 自定义日志配置:在挂载的./configs/keycloak/conf目录下添加log4j2.xml文件,指定迁移相关日志的输出规则。
  3. 手动执行迁移命令:进入容器内执行/opt/keycloak/bin/kc.sh start --auto-build,直接查看控制台输出的实时错误信息。

内容的提问来源于stack exchange,提问作者K3forme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:42:37