Red Hat SSO 7.6-25容器停止后无法重启问题问询
RH SSO 7.6-25/7.6-10容器停止后无法重启的问题解决
问题描述
运行标签为7.6-25的Red Hat Single Sign-On(RH SSO)Docker镜像registry.redhat.io/rh-sso-7/sso76-openshift-rhel8:7.6-25时,首次启动容器应用可正常运行,但停止后再次启动会立即退出,导致应用无法访问。7.6-10版本复现该问题时,日志会明确报错数据源重复:
2023-08-30 02:04:18 00:04:18,093 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 27) WFLYCTL0013: Operation ("add") failed - address: ([ 2023-08-30 02:04:18 ("subsystem" => "datasources"), 2023-08-30 02:04:18 ("data-source" => "KeycloakDS") 2023-08-30 02:04:18 ]) - failure description: "WFLYCTL0212: Duplicate resource [ 2023-08-30 02:04:18 ("subsystem" => "datasources"), 2023-08-30 02:04:18 ("data-source" => "KeycloakDS") 2023-08-30 02:04:18 ]" 2023-08-30 02:04:18 00:04:18,210 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) "WFLYCTL0193: Failed executing subsystem datasources boot operations" 2023-08-30 02:04:18 00:04:18,212 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("parallel-subsystem-boot") failed - address: ([]) - failure description: "WFLYCTL0193: Failed executing subsystem datasources boot operations" 2023-08-30 02:04:18 00:04:18,218 FATAL [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0056: Server boot has failed in an unrecoverable manner; exiting. See previous messages for details.
相关Docker Compose配置:
rh-sso: container_name: rh-sso image: registry.redhat.io/rh-sso-7/sso76-openshift-rhel8:7.6-25 ports: - "8080:8080" environment: SSO_ADMIN_USERNAME: admin SSO_ADMIN_PASSWORD: admin
重现步骤
- 执行命令启动RH SSO容器:
docker run -d -p 8080:8080 registry.redhat.io/rh-sso-7/sso76-openshift-rhel8:7.6-25 - 访问应用确认正常运行
- 通过命令
docker stop <container_id>或Docker工具停止容器 - 再次使用步骤1的命令启动容器
- 观察到容器立即退出,应用无法访问
原因分析
该问题源于RH SSO容器的启动脚本逻辑:首次启动时,脚本会修改JBoss的配置文件(如添加KeycloakDS数据源),但这些配置修改直接保存在容器内部的文件系统中。当容器停止后再次启动,脚本会重复执行相同的配置操作,导致数据源重复定义,触发启动失败。7.6-25版本虽未在日志中显示明确错误,但本质原因与7.6-10版本一致。
解决方案
1. 使用持久化卷保存配置与数据(推荐)
通过挂载外部Docker卷到容器的配置和数据目录,让首次启动的配置持久化保存,重启时脚本检测到已存在的配置会跳过重复操作。
Docker Run命令修改:
docker run -d -p 8080:8080 \ -v rh-sso-config:/opt/eap/standalone/configuration \ -v rh-sso-data:/opt/eap/standalone/data \ -e SSO_ADMIN_USERNAME=admin \ -e SSO_ADMIN_PASSWORD=admin \ registry.redhat.io/rh-sso-7/sso76-openshift-rhel8:7.6-25
Docker Compose配置修改:
rh-sso: container_name: rh-sso image: registry.redhat.io/rh-sso-7/sso76-openshift-rhel8:7.6-25 ports: - "8080:8080" environment: SSO_ADMIN_USERNAME: admin SSO_ADMIN_PASSWORD: admin volumes: - rh-sso-config:/opt/eap/standalone/configuration - rh-sso-data:/opt/eap/standalone/data volumes: rh-sso-config: rh-sso-data:
2. 升级至更高版本镜像
Red Hat后续版本可能修复了启动脚本的重复配置问题,尝试升级到7.6系列的更新版本(如7.6-30+)或更高主版本的RH SSO镜像(如7.7及以上)。
3. 自定义镜像修改启动脚本(不推荐)
若无法升级或使用持久化卷,可自定义镜像修改容器内的启动脚本,添加判断逻辑,仅在配置不存在时执行数据源添加操作。此方式需维护自定义镜像,适合特殊场景需求。
内容的提问来源于stack exchange,提问作者drakidou
相关产品推荐
相关产品推荐

