zoukankan      html  css  js  c++  java
  • 挂载方式启动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

    成功了

    人多不足以依赖,要生存只有靠自己。 深窥自己的心,而后发觉一切的奇迹在你自己。 凡事皆有终结,因此,耐心是赢得成功的一种手段。
  • 相关阅读:
    [ZT]SAP ECC5.0 Working Log TO 2008.5.26
    VS错误:Lc.exe 已退出错误 返回代码 1
    如何实现两个数据库的同步?
    sp_configure 'max server memory'
    [轉]中国油价世界最高 是美国7倍!
    C#WinForm App自动更新(Live Update)架构
    利用批處理自動在異地備份數據庫
    18种根据屏幕字段查找潜在数据的技巧
    [ZT]2008年到校园招聘各企业待遇曝光
    吉祥物由于具有商业气息,所以历届奥运会吉祥物都没有出场。
  • 原文地址:https://www.cnblogs.com/cl1255674805/p/14866176.html
Copyright © 2011-2022 走看看