Docker 1.9允许将参数传递给dockerfile。参见链接:https : //docs.docker.com/engine/reference/builder/#arg
如何在docker-compose.yml中传递相同的参数?
如果可能,也请提供示例。
Docker 1.9允许将参数传递给dockerfile。参见链接:https : //docs.docker.com/engine/reference/builder/#arg
如何在docker-compose.yml中传递相同的参数?
如果可能,也请提供示例。
Answers:
此功能已在Compose 1.6中添加。
参考:https : //docs.docker.com/compose/compose-file/#args
services:
web:
build:
context: .
args:
FOO: foo
现在docker-compose支持变量替换。
Compose使用docker-compose运行时所在的shell环境中的变量值。例如,假设外壳包含POSTGRES_VERSION=9.3并且您在docker-compose.yml文件中提供此配置:
db:
image: "postgres:${POSTGRES_VERSION}"
当您运行docker-compose up此配置,撰写外观为POSTGRES_VERSION在外壳和替代它的价值的环境变量。在这个例子中,撰写解析image到postgres:9.3运行配置之前。
docker-compose它不支持传递参数。
docker-compose run用于传递参数,因为必须将参数传递给多个容器。
docker-compose.yml文件中使用默认值。 environment:\n PLATFORM_VERSION: "${PLATFORM_VERSION:-v1.0.0}"。PS:\n只是因为我找不到在注释中格式化多行代码块的方法。
现在可以从docker-compose v2 +作为build对象的一部分完成此操作;
docker-compose.yml
version: '2'
services:
my_image_name:
build:
context: . #current dir as build context
args:
var1: 1
var2: c
在上面的示例中,“ var1”和“ var2”将被发送到构建环境。
注意:任何environment与args变量同名的env变量(使用块指定)将覆盖该变量。
args按键是否需要小写吗?我所看到的文档和所有示例都使用小写键,但是我没有看到有关必填项的任何提及。
environment块中的变量不会覆盖args变量。只是args变量在容器构建过程environment中可用,而变量在容器运行时可用。