美文网首页
Docker 部署java 程序

Docker 部署java 程序

作者: 向远方_1f71 | 来源:发表于2020-08-12 16:58 被阅读0次

通常情况下制作镜像时,都是将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包的错乱。那方法二就来解决这个问题,使用脚本。

相关文章

网友评论

      本文标题:Docker 部署java 程序

      本文链接:https://www.haomeiwen.com/subject/gokydktx.html