假如我们再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配置文件路径,在启动工程时指定配置文件