请问,docker部署后如何修改spring boot 的应用配置文件?

  我是个java开发菜鸟,以前一直维护的是spring mvc+tomcat在linux的web项目,最近在学习spring boot +docker(docker-compose),试图改造我手上的Web项目,但遇到一个问题百思不得其解,还希望哪位大神伸手援助。

  先说说我的需求,很简单,以前维护pring mvc+tomcat的时候,只是先在Linux部署tomcat、mysql等组件,然后将我的spring应用放至tomcat/webapps下就可以正常运行,因为部署环境不同,该应用经常需要根据现场实际情况,修改web的config等配置文件然后重启,如果应用报错还可以在指定目录下查看项目打印的各类log日志(log4j输出不同的日志)。虽然前期部署麻烦了一些,但有安装脚本什么的,维护起来也方便。  这段时间接触了spring boot +docker以后,也能够将应用通过docker(docker-compose)方式部署起来,但后续的问题怎么也搞不定,比如我想修改应用配置文件中的某一参数,然后重启docker容器就可以正常运行项目,但不知道如何修改application.xml。

  我能想到的方法有三种:

  1、通过volume将tomcat映射出来,docker-compose配置如下

#docker-compose的版本
version: '3'

#定义服务
services:

  #服务名称,可随意定义
  gwqserive:
    build:
      #dockerfile的路径
      context: gwqapp
      #dockerfile的名称
      dockerfile: appDockerfile
    #相当于docker run -v的作用
    volumes:
      - "./jar:/tmp"
    #容器名称
    container_name: gwq-compose-app-container
    #该服务依赖的其他服务,该配置选项可修改启动顺序
    depends_on:
      - mysqldbserver
      - redisServer
    links:
      - mysqldbserver 
      - redisServer

appDockerfile:

FROM java:8-jre-alpine

#维护者信息
MAINTAINER Gaowq
VOLUME /tmp


ADD SpringBootRedisDemo-0.0.1-SNAPSHOT.jar app.jar 


#为构建镜像设置监听端口,使容器在运行时监听
EXPOSE 8080

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

好吧,然后容器运行以后,前往/tmp或jar目录下,发现全是tomcat缓存类似的文件,没啥用,跟之前的webapps完全不是一回事

 2、想docker exec进去看看,然后。。。一脸meng bi!完全不知道需要的文件在哪

 3、我能想到的方式,就是修改好应用配置文件,重新打包jar生成新的镜像,但。。。未免有点太复杂了吧!而且也没有解决我获取不同各类log4j日志的问题。

  因为项目最终打包完毕后,将交于专门技术人员安装与维护,故上述情况经常会遇到,由于本人技术太菜,还请各位大神不吝赐教!谢谢!

2个回答

要么打出来的镜像里面,就已经是对的配置。
要么用配置中心吧,docker部署一般都会用配置中心来管理程序配置。
手动去容器里面改肯定是不行的,容器一重启又会变成旧的配置

弄个新的配置文件,放到在jar包之外,启动的时候,读取那个配置文件,然后application.xml里引用变量,这样以后只要修改那个配置文件就行了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问