我的docker-compose.yml
version: '3'
services:
test:
build: .
我的Dockerfile
FROM alpine:latest
ENTRYPOINT echo $ARG1 $ARG2
我的.env
文件
ARG1=argument100
ARG2=argument200
如果我运行docker-compose run test
,则会打印出空行。但是,我将env_file
部分添加到docker-compose.yml
中,以获得预期的输出。
新的docker-compose.yml
version: '3'
services:
test:
build: .
env_file:
- .env
再次运行docker-compose
$ docker-compose run test
argument100 argument200
我是否使用非法方法将参数传递给ENTRYPOINT
内的Docker
命令?为什么.env
不会自动加载到docker-compose run
上?
答案 0 :(得分:0)
.env
文件用于在docker-compose命令本身中设置变量,该变量可用于扩展docker-compose.yml文件本身中的变量。 env_file
规范将在容器内定义变量。它们在两个不同的级别上运行。
还有第三种类型的变量build args,可以将其注入到图像的构建中。
每种方法都有其独特的目的,并且不是完成同一件事的多种方式。