pengyisc1987 2019-06-05 00:16 采纳率: 0%
浏览 6174

请问,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日志的问题。

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

  • 写回答

4条回答

  • 曲奇丶 2019-06-06 18:21
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 手机连接电脑热点显示无ip分配
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大