您正在尝试让 Wildfly 在构建时加载您的自定义配置文件。问题是,Wildfly 服务器没有运行,而Dockerfile
正在建设。
Wildfly 实际上已经为您提供了有关自动加载自定义配置的信息,并且内置了对您想要执行的操作的支持。您只需将配置文件放在映像内的“神奇位置”即可。
您需要将配置文件放到此处:
/opt/jboss/startup-scripts/
这样你的Dockerfile
看起来像这样:
FROM jboss/keycloak:7.0.0
COPY startup-config.cli /opt/jboss/startup-scripts/startup-config.cli
ENV KEYCLOAK_USER=admin
ENV KEYCLOAK_PASSWORD=admin
摘自钥匙斗篷文档 https://hub.docker.com/r/jboss/keycloak/:
使用 Dockerfile 添加自定义脚本
可以通过以下方式添加自定义脚本
创建您自己的 Dockerfile:
FROM keycloak
COPY custom-scripts/ /opt/jboss/startup-scripts/
现在您可以简单地启动图像,keycloak 中的内置功能(实际上是 Wildfly 功能)将在该特定目录中查找配置,然后尝试加载它。
从评论中编辑最终解决方案:
虽然最初的答案解决了能够将配置传递到服务器的问题,但脚本内容仍然存在问题。启动容器时收到以下错误:
=========================================================================
Executing cli script: /opt/jboss/startup-scripts/startup-config.cli
No connection to the controller.
=========================================================================
问题出在startup-config.cli
脚本,其中 jboss 命令embed-server
丢失,需要启动与 jboss 实例的连接。还缺少结尾stop-embedded-server
命令。有关以这种方式配置 jboss 的更多信息,请参阅此处的文档:第 8 章 嵌入服务器以进行离线配置 https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.0/html/management_cli_guide/running_embedded_server
最终脚本:
embed-server --std-out=echo
/subsystem=keycloak-server/theme=defaults/:write-attribute(name=cacheThemes,value=false)
/subsystem=keycloak-server/theme=defaults/:write-attribute(name=cacheTemplates,value=false)
stop-embedded-server