如何通过JBoss CLI将宿主机WAR包部署至已启动的JBoss Docker容器(不使用自定义镜像)
部署WAR包到JBoss Docker容器(无需自定义镜像)
没问题,我来一步步给你说怎么操作,全程不用自定义镜像,直接用JBoss CLI就能搞定:
步骤1:把宿主机的WAR包复制到容器内部
首先得让JBoss容器能访问到你的WAR包,最简单的方式就是用docker cp命令把文件从宿主机复制到容器的临时目录里,比如:
docker cp /宿主机上的WAR包路径/your-app.war <容器名称或ID>:/tmp/
记得把<容器名称或ID>换成你实际的JBoss容器标识,你可以用docker ps命令查到这个信息。
步骤2:通过JBoss CLI部署WAR包
这里有两种常用的方式,选适合你的就行:
方式一:进入容器内部使用CLI
这种方式最直接,不需要额外配置端口:
- 先进入容器的交互式shell:
docker exec -it <容器名称或ID> /bin/bash
- 启动JBoss CLI并连接到本地服务器:
jboss-cli.sh --connect
(如果这个命令找不到,试试全路径:/opt/jboss/wildfly/bin/jboss-cli.sh --connect,不同JBoss版本路径可能略有差异,一般WildFly是这个路径)
- 执行部署命令:
deploy /tmp/your-app.war
- 如果想要给部署的应用指定自定义名称,可以加
--name=your-app参数; - 如果之前已经部署过同名应用,需要覆盖的话,加上
--force参数,比如:deploy /tmp/your-app.war --force
方式二:远程连接JBoss CLI(适合不想进入容器的情况)
如果你的JBoss容器启动时映射了管理端口(默认是9990),可以直接在宿主机上远程操作:
- 确保容器运行时已经暴露了9990端口,比如启动容器的命令里有
-p 9990:9990;如果之前没开,可能需要重启容器加上这个端口映射。 - 先在容器里添加管理用户(JBoss默认没有启用无密码远程连接):
进入容器shell后执行:
/opt/jboss/wildfly/bin/add-user.sh
按照提示创建一个管理员用户,记住用户名和密码。
- 在宿主机上启动JBoss CLI并远程连接:
jboss-cli.sh --connect controller=localhost:9990 --user=你的管理员用户名 --password=对应的密码
(如果宿主机上没有JBoss CLI,直接用方式一操作更省事)
- 同样执行部署命令:
deploy /tmp/your-app.war
(这里的路径是容器内部的路径,所以还是得先完成步骤1的docker cp操作)
验证部署
部署完成后,你可以在CLI里执行deployment-info命令,查看所有已部署的应用,确认你的WAR包已经成功部署。
内容的提问来源于stack exchange,提问作者shalene
相关产品推荐
相关产品推荐

