挂载方式启动docker镜像(加载外部配置,无需重新打镜像启动)

前言:

在实际生产应用中尤其是测试阶段可能需要频繁修改程序包内application.properties文件,然后重新打镜像,这样不断打镜像消耗了大量的精力和时间,现在通过挂载方式,读取外部配置文件的方式,实现不用打镜像就修改程序包内的配置文件,简化步骤,提高效率(部分图片是缩放了的,看不清的话可以点击就放大)

1.准备需要打镜像的文件,把所有的文件放在一个realware文件夹里,realware下有三个文件

①config文件夹里放的是需要挂载的配置文件application.properties,就是通过修改该配置文件实现修改镜像程序包内的配置文件

②realware是war解压后的文件(程序的war包解压出来),上传上去

③Dockerfile里放打镜像的命令,内容如下

FROM tomcat:9.0

COPY ./realware /usr/local/tomcat/webapps/realware

ADD  ./config /usr/local/tomcat/webapps/realware/WEB-INF/classes/config

EXPOSE 8080

CMD ["/usr/local/tomcat/bin/catalina.sh","run"]

命令解释:

FROM tomcat:9.0   下载tomcat

COPY ./realware /usr/local/tomcat/webapps/realware  复制realware程序包到tomcat下

ADD  ./config /usr/local/tomcat/webapps/realware/WEB-INF/classes/config  挂载config文件到程序的config(程序中可以没有该config文件,该命令可以直接添加)

2.打镜像,注意3.0.0 后面有个空格和.

docker image build -t realware:3.0.0 .

 

3.docker 挂载方式启动镜像启动

docker run -p 8080:8080 --name realware -v /home/realware/config:/usr/local/tomcat/webapps/realware/WEB-INF/classes/config -d realware:3.0.0

命令解释:

8080:8080  对外映射8080端口,对内转发也是8080端口

--name realware 启动的镜像起了一个realware的名字

/home/realware/config 本地目录,挂载的文件

/usr/local/tomcat/webapps/realware/WEB-INF/classes/config  覆盖容器中的目录的配置,config下原本有application.properties

realware:3.0.0         需要启动的镜像

 由于我之前启动过realware的镜像,现在需要删除掉原来的这个镜像

 

docker rm 7257473a1f1ed717d4ff95ddb6c44ad420bb1625df4d874843dd53a991d710b6

再重新执行命令:

docker run -p 8080:8080 --name realware -v /home/realware/config:/usr/local/tomcat/webapps/realware/WEB-INF/classes/config -d realware:3.0.0

启动成功

4.查看启动日志:

docker logs -f 2e4a437a15d31617c2237e4abf1627ef81116c5cfdf2a6caf896ca2fcea06a39

看到日志已经打印出获取的值了JDTEST

 

 注意该值是从挂载文件config下的application.properties里拿的

 

下面我们修改该值,实现挂载启动外部配置文件,不需要重打docker镜像启动,修改application.properties完后上传到config下

 

server.context-path=/realware
server.port=8087
evoucher.model.SignService=JDTESTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

关掉刚刚启动的镜像, 删除占用realware的容器名字

docker rm 容器id

重新启动

docker run -p 8080:8080 --name realware -v /home/realware/config:/usr/local/tomcat/webapps/realware/WEB-INF/classes/config -d realware:3.0.0

 

查看日志,r日志已经打印出修改后的值,JDTESTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

成功了

 

posted @ 2021-06-09 14:37  小柳爱吃肉  阅读(2910)  评论(0编辑  收藏  举报