参考文档
注意点
- env_file指定env文件中定义的变量只能在docker容器内部使用,.env文件的变量可以在docker-compose中使用
- 如果想要自定义env文件名称,需要在docker-compose --env-file image.env 参数中指定
docker-compose.yml定义变量
直接
environment:KEV: VELUE
KEV: VELUE
environment:- KEV=VELUE
- KEV=VELUE
案例:
version:'3'services:db:image:'docker.io/mysql:latest'environment:MYSQL_ROOT_PASSWORD:"liubei@2021"MYSQL_USER:'liubei'MYSQL_PASSWORD:'liubei@2021'MYSQL_DATABASE:'liubeidb'version:"3.1"services:mysql:image: harbocto.xxx.com.cn/public/mysql:5.7environment:- MYSQL_ROOT_PASSWORD=liubei@2021
- MYSQL_DATABASE=liubeidb
- TZ=Asia/Shanghai
.env文件引入
外部
容器启动中需要用到的变量,可以在
.env
文件中定义
引用当前目录下的env文件
- 在docker-compose.yml同级目录下面创建.env文件
value不要加引号,引用会自动添加
- 在docker-compose.yml中使用使用key引入
version:"3.1"services:mysql:image: harbocto.xxx.com.cn/public/mysql:5.7environment:- MYSQL_ROOT_PASSWORD
- MYSQL_DATABASE
- TZ
restart: on-failure
ports:- 3306:3306volumes:- ./data:/var/lib/mysql
- docker-compose config 查看解析后的配置
[root@test mysql]# docker-compose configservices:mysql:environment:MYSQL_DATABASE: mydb
MYSQL_ROOT_PASSWORD: liubei@2021
TZ: Asia/Shanghai
image: harbocto.xxx.com.cn/public/mysql:5.7ports:- 3306:3306/tcp
restart: on-failure
volumes:- /usr/local/mysql/data:/var/lib/mysql:rw
version:'3.1'
引用指定目录下的env文件
注意:
这种方式定义的变量无法在compose文件种类使用
env_file:- ./test.env
解决方案:
指定参数
docker-compose --env-file=XXXX -f docker-compose.yml up
变量的两种用途
前置
: 向.env中添加 PORT_MYSQL=3306
docker-compose.yml使用
直接通过${XXX}来引用.env的值
version:"3.1"services:mysql:ports:- $PORT_MYSQL:3306
container使用
直接在environment处写上.env中的key
version:"3.1"services:mysql:image: harbocto.xxx.com.cn/public/mysql:5.7environment:- MYSQL_ROOT_PASSWORD
- MYSQL_DATABASE
- TZ
版权归原作者 善良小茅 所有, 如有侵权,请联系我们删除。