假如我們再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配置文件路徑,在啟動工程時指定配置文件