docker-compose如何动态配置springboot项目的application.yml的配置


假如我们再springboot的工程中有配置文件

方式1:  

application.properties里面存在环境变量:

#配置数据库链接
spring.datasource.url = jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8 #DB_HOST,DB_PORT,DB_NAME都是环境变量
#配置数据库用户名
spring.datasource.username = ${DB_USER}  #DB_USER就是环境变量
#配置数据库密码
spring.datasource.password = ${DB_PASSWORD}#DB_PASSWORD就是环境变量

然后在docker-compose.yml文件中打包镜像

version: '3'
services:
  web:
    restart: always
    depends_on:
      - db
    image: springboot-app-image   #镜像,如果本地docker仓库没有将会从远端docker仓库下载该镜像
    build: .
    ports:
      - 8080:8080
    environment:
      - DB_HOST=192.168.0.11    #application.properties的环境变量
      - DB_PORT=3306         #application.properties的环境变量
      - DB_USER=root         #application.properties的环境变量
      - DB_PASSWORD=123456     #application.properties的环境变量   
      - DB_NAME=db
    networks:
      - credit-facility-net

方式二:

当在docker-compose.yml文件没有指定环境变量的配置时,则使用默认的环境变量

spring.datasource.username=${USER_NAME:tao} #docker-compose没有指定时则使用tao这个用户名

敲入以下命令即可运行

docker-compose up -d

 

当springboot本身就有多个配置文件时,我们需要在Dockerfile或者docker-compose.yml指定配置文件

 

 在Dockerfile指定配置文件

FROM java:8
 
MAINTAINER *********@gmail.com
 
ADD your_jar_name.jar app.jar  # 把jar包打入镜像中,并改名为app.jar
 
EXPOSE 8090 # 镜像启动成为容器后,对外暴露的端口
 
# Image创建容器时的初始化内存,最大内存,及启动时使用的profile. -c为清除以前启动的数据
ENTRYPOINT ["java","-Xms1024m","-Xmx1024m","-jar","/app.jar","--spring.profiles.active=mysql","-c"] #这里指定了appication-mysql.properties配置文件

在运行docker镜像时指定配置文件,敲入命令

docker run -d \
    -p 8001:8001 \
    -e "SPRING_PROFILES_ACTIVE=mysql" \
    --name auth \
    -v /tmp/cloud-ac-service/auth/:/var/log/cloud-ac-service/auth \
    auth:latest

通过docker-compose.yml指定配置文件

方式三:通过java -jar app.jar --spring.config.location=application.yml配置文件路径,在启动工程时指定配置文件

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM