Dockerfile
1 使用系统环境变量,例如docker run -e VARIABLE=VALUE ...
web:
image: \"webapp:${TAG}\"
2 通过environment设置,这种方法适用于正在运行的容器里,调用特定变量,可登陆容器输入env命令查看,例如docker run -e VARIABLE ...
web:
environment:
- DEBUG=1
3 可以通过env_file传入多个变量,例如docker run --env-file=FILE ...
web:
env_file:
- web-variables.env
4 通过ARG命令传入,
docker-compose
1 像docker run -e一样,docker-compose也可使用docker-compose run -e
docker-compose run -e DEBUG=1 web python console.py
也可以传入shell里的值,而不用先赋值
docker-compose run -e DEBUG web python console.py
容器中DEBUG变量的值取自运行Compose的shell中相同变量的值
docker-compose run用法
2 通过.env文件传入
可以设置docker-compose文件默认读取的变量配置文件.env
$ cat .env
TAG=v1.5
$ cat docker-compose.yml
version: \'3\'
services:
web:
image: \"webapp:${TAG}\"
当运行docker-compose up命令时,web服务使用镜像webapp:v1.5,之前可以通过docker-compose config命令确认变量是否正确
变量配置文件读取顺序:
Compose file
Shell environment variables
Environment file
Dockerfile
Variable is not defined
3 运行docker-compose build命令时,通过–build-arg variable传入参数
以下是简单例子,docker build 也可以通过此方法传入:
1 导入运行PHP用户的UID为系统环境变量,变量名为PHPID
2 在PHP的dockerfile里添加 ARG PHPID
3 sudo -E docker-compose build --build-arg PHPID php # 构建php服务
4 sudo -E docker-compose up -d #创建容器
注意:如果是root可以不加-E,如果是普通用户sudo要加上
仅当没有用于环境或env_file的Docker Compose条目时,才能在Dockerfile中设置任何ARG或ENV设置
继续阅读与本文标签相同的文章
全球超级富豪对私人飞机的需求正在不断增长
-
基础c4d教程:简单的木质吊灯建模,小白也能学会
2026-05-18栏目: 教程
-
大族激光:智能装备LION系列光纤激光切割机发布仪式在湘隆重召开
2026-05-18栏目: 教程
-
实拍上汽首个“无人”仓库,本月正式运行
2026-05-18栏目: 教程
-
自动驾驶光车以外的硬件就7万 滴滴想让你不买车就能先坐上
2026-05-18栏目: 教程
-
滴滴迎来大整顿!1000万罚单认清现实,8万司机被开除
2026-05-18栏目: 教程
