Docker 1.9允许将参数传递给dockerfile。 请参见链接:https://docs.docker.com/engine/reference/builder/#arg
如何在docker-compose.yml中传递相同的参数?
如果可能的话,请提供一个例子。
答案 0 :(得分:68)
现在可以将docker-compose v2 +作为build
对象的一部分来完成;
搬运工-compose.yml
version: '2'
services:
my_image_name:
build:
context: . #current dir as build context
args:
var1: 1
var2: c
在上面的例子中,“var1”和“var2”将被发送到构建环境。
注意:任何与environment
变量同名的env变量(使用args
块指定)都将覆盖该变量。
答案 1 :(得分:64)
现在docker-compose
支持变量替换。
Compose使用运行docker-compose
的shell环境中的变量值。例如,假设shell包含POSTGRES_VERSION=9.3
,并在docker-compose.yml
文件中提供此配置:
db:
image: "postgres:${POSTGRES_VERSION}"
使用此配置运行docker-compose up
时,Compose会在shell中查找POSTGRES_VERSION
环境变量并替换其值。对于此示例,Compose会将image
解析为{{ 1}}在运行配置之前。
答案 2 :(得分:1)
要添加到这些答案中的一点是,args
仅在使用 docker-compose up --build
时被拾取,而在使用 docker-compose build
时不会被拾取。如果您想分步构建和运行,则需要使用 docker-compose build --build-arg YOUR_ENV_VAR=${YOUR_ENV_VAR}
或 docker build --build-arg YOUR_ENV_VAR=${YOUR_ENV_VAR}