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