docker 部署java 程序

通常情况下制作镜像时,都是将jar包直接Add或Copy进入镜像中,这样启动容器后,如需更新jar包,需要重新制作镜像,从新制作容器,对于springboot的发布不易,那如果在不更新竞相或者容器的前提下就可以更新jar包呢。方法如下:
方法一:
1、制作Dockerfile
FROM java:8
EXPOSE 8090
ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/data/data-center-service-1.0.0-SNAPSHOT.jar"]
注意“/data/data-center-service-1.0.0-SNAPSHOT.jar”,在这里我们指定了运行容器里/data目录下的data-center-service-1.0.0-SNAPSHOT.jar文件。
到这里我们会想到,每次发布新版本的jar包时,将该文件替换掉不就将应用更新了。如果直接进容器去修改,目前我还没有找到办法。我想到的是在宿主机中将其更新呢,这样是最方便。那解决方案就是将宿主机的目录与data目录进行关联。
2、制作镜像。
docker build -t eurekaclient:1.2.0 .
3、将容器目录与宿主机目录进行关联。
由于通过Dockerfile文件中的VOLUME进行关联,只能指定容器的目录,而宿主机的目录是随机的。这样是不能满足我的需求的。我只能采用docker run时指定关联目录,命令如下:
docker run --name eurekaclient_1 -it -v /home/xijie/app/eureka-client/workplace:/data -d -p 8090:8090 eurekaclient:1.2.0
docker run --network host -e TZ=Asia/Shanghai --name arealq -it -v /root/wwwroot/LinkJava/quotation/time:/data -d -p 8089:8089 arealq:java
–name为指定容器的名称;
-v 宿主机目录关联容器目录
-p指定容器暴露的端口
4、这样每次更新的jar包时,将新jar包放入宿主机的“/home/xijie/app/eureka-client/workplace”目录下即可。
5、然后docker stop启动的容器,然后再docker start容器就可以了。就将信的应用进行了发布。
小结:方法一虽然解决了更新jar包的问题,但是又出现了一个问题就是在Dockerfile中将使用的jar包名称写死了,这样每次更新jar包必须是同样的jar包,这样当应用从1.1版本更新1.2版本时就很痛苦,需要将本是1.2版本的jar包改名为1.1,这样会导致后续jar包的错乱。那方法二就来解决这个问题,使用脚本。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值