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

    成功了

    人多不足以依赖,要生存只有靠自己。 深窥自己的心,而后发觉一切的奇迹在你自己。 凡事皆有终结,因此,耐心是赢得成功的一种手段。
  • 相关阅读:
    sublime去除空白行和重复行
    python list删除数据 和复制 列表
    微博实现简繁体转换
    2017.10.27日面试总结
    python 类和__class__理解
    python 单例模式应用
    pt-query-digest 慢日志监控
    在线安全清空慢查询日志slowlog
    Linux高级系统恢复技术
    灾备演练
  • 原文地址:https://www.cnblogs.com/cl1255674805/p/14866176.html
Copyright © 2011-2022 走看看