docker-compose.yml传入环境变量参数进容器,springboot使用。

邵毅
2023-12-01

参考:

https://docs.docker.com/compose/compose-file/compose-file-v3/#compose-file-v34-and-under

https://docs.docker.com/compose/compose-file/compose-file-v3/#env_file

第一步:定义自己的参数,在myEnv.env   或 .env的文件中,内容格式示例:

mysql_url=jdbc:mysql://local:3306/sample?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
mysql_username=root
mysql_password=WeLoveDocker

.经验证,变量名不能使用 短杠-。

 

第二步:在docker-compose.yml文件中,

第一种方式,使用env_file的配置项,配置 myEnv.env 文件传入,myEnv.env 文件与docker-compose.yml文件,在同级目录下。示例:

services:
  sample:
    restart: always
    container_name: sample
    image: openjdk:8-jre
    env_file:
        - myEnv.env

第二种方式,使用environment配置顶传入,其中${mysql_url}的值,定义在.env文件中,与docker-compose.yml文件,在同级目录下。示例:

services:
  sample2:
    restart: always
    container_name: sapmle2
    image: openjdk:8-jre
    environment:
       TZ: "Asia/Shanghai"
       mysql_url: "${mysql_url}"
       mysql_username: "${mysql_username}"
       mysql_password: "${mysql_password}"

 

第三步:在docker容器里跑的sprign项目,就可以使用由docker-compse传入的环境变量了。

/src/main/resources/application.yml示例:

spring:
  datasource:
    url: ${mysql_url}
    username: ${mysql_username}
    password: ${mysql_password}

 

 

 

 类似资料: