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
中可用,而变量在容器运行时可用。