使用Docker compose传递Dockerfiles的参数

时间:2016-06-27 10:24:29

标签: docker docker-compose

我正在尝试在构建阶段使用参数化我的dockerfiles并在Docker-compose中使用参数。例如,在Docker compose中,我已经定义了一个名为bpp的服务,如下所示:

bpp:
  build:
    context: .
    dockerfile: Dockerfile.bpp
    args:
      gp : 8080
  image: serv/bpp
  restart: always
  depends_on:
    - data
  links:
    - data

我正在尝试将名为gp的参数传递给Dockerfile.bpp,其中我在启动Python应用程序时使用参数,暴露端口等。 例如,在dockerfile.bpp中试图公开端口gp如下:

EXPOSE gp

但是,当通过命令 docker-compose build 构建docker文件时,我收到以下错误: 错误:服务'bpp'无法构建:无效的containerPort:gp

似乎参数gp在dockerfile中不可见。有什么建议吗?

2 个答案:

答案 0 :(得分:16)

您需要将ARG gp添加到Dockerfile。

...
ARG gp

EXPOSE $gp
...

https://docs.docker.com/engine/reference/builder/#arg

值得一提的是,当你通过compose运行它时,这不会暴露端口,你需要为你的docker-compose.yml添加一个ports指令。

答案 1 :(得分:2)

首先,the syntax is

build:
  args:
    buildno: 1
    user: someuser

build:
  args:
    - buildno=1
    - user=someuser

请尝试使用gp: 8080,而不是gp : 8080

其次,请确保您使用的是version 2 of the docker-compose.yml format

第三,尝试

EXPOSE $gp