关于dockerfile:如何在docker-compose中传递参数?

How to pass arguments within docker-compose?

docker 1.9允许向dockerfile传递参数。参见链接:https://docs.docker.com/engine/reference/builder/arg

如何在docker-compose.yml中传递相同的参数?如果可能,请提供一个示例。


现在可以在docker compose v2+作为build对象的一部分时完成此操作;

docker-compose.yml

1
2
3
4
5
6
7
8
version: '2'
services:
    my_image_name:
        build:
            context: . #current dir as build context
            args:
                var1: 1
                var2: c

请参阅Docker撰写文档。

在上面的示例中,"var1"和"var2"将发送到构建环境。

注:任何与args变量同名的env变量(使用environment块指定)都将覆盖该变量。


现在,docker-compose支持变量替换。

compose使用运行docker-compose的shell环境中的变量值。例如,假设shell包含POSTGRES_VERSION=9.3,并且您在docker-compose.yml文件中提供了此配置:

1
2
db:
  image:"postgres:${POSTGRES_VERSION}"

当使用此配置运行docker-compose up时,compose会在shell中查找POSTGRES_VERSION环境变量,并将其值替换为中的值。对于这个例子,compose在运行配置之前将image解析为postgres:9.3


此功能已添加到Compose 1.6中。

参考:https://docs.docker.com/compose/compose file/args

1
2
3
4
5
6
services:
  web:
    build:
      context: .
      args:
        FOO: foo