Dockerfile、docker-compose传入环境变量方法总结

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设置

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值