如何编写Dockerfile将war包部署到JBoss 7.2并完成相关配置?
实现方案
你需要先把现有在用的JBoss相关配置、密钥库、业务包都归集到Dockerfile同级的构建目录,再按照以下步骤编写Dockerfile即可。
前置准备
- 导出当前在用JBoss 7.2的配置文件(单机部署一般为
standalone.xml,集群部署为对应domain配置文件),该文件已包含你的数据库数据源、keystore密钥库相关配置 - 把在用的keystore密钥库文件(示例命名为
server.keystore)放到构建目录 - 把需要部署的自有war包(示例命名为
app.war)放到构建目录 - 若你用到了自定义的数据库驱动模块,同步把JBoss根目录下的
modules对应目录复制到构建目录
Dockerfile示例
# 基础镜像可替换为你本地已有的同版本JBoss 7.2镜像,以下为官方JBoss EAP 7.2镜像示例 FROM jboss/eap72-openshift:latest # 临时切换到root用户操作文件权限 USER root # 复制带数据库、keystore配置的自定义配置文件到JBoss配置目录 COPY standalone.xml /opt/eap/standalone/configuration/standalone.xml # 复制keystore到配置目录,路径必须和standalone.xml里配置的keystore存储路径完全一致 COPY server.keystore /opt/eap/standalone/configuration/server.keystore # 复制业务war包到JBoss自动部署目录 COPY app.war /opt/eap/standalone/deployments/ # 如有自定义数据库驱动模块,取消下面一行注释 # COPY modules/ /opt/eap/modules/ # 统一调整文件权限为JBoss运行用户所有,避免启动权限报错 RUN chown -R jboss:jboss /opt/eap/standalone/ # 切回JBoss默认运行用户 USER jboss # 暴露服务端口,可根据你实际配置的HTTP、HTTPS、管理端口调整 EXPOSE 8080 8443 9990 # 启动JBoss服务,绑定所有网卡允许外部访问 CMD ["/opt/eap/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
注意事项
- 路径匹配:所有复制到镜像内的文件路径,必须和
standalone.xml里配置的路径完全一致,否则会出现keystore找不到、数据源加载失败的问题 - 数据库连通性:若使用外部数据库,不要在数据源配置里写
localhost,要填数据库服务的实际可访问IP或域名,容器启动时要确保容器网络可访问数据库 - 密码安全:若keystore、数据库密码写在配置文件里有安全风险,可将配置里的密码改为占位符,容器启动时通过环境变量注入替换
- 路径适配:如果你使用的是社区版WildFly对应JBoss 7.2的镜像,默认根目录为
/opt/jboss/wildfly/,把上述Dockerfile里的路径替换为对应路径即可
内容的提问来源于stack exchange,提问作者niharr7
相关产品推荐
相关产品推荐

