使用Docker compose传递Dockerfiles的参数

lip*_*nen 8 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
Run Code Online (Sandbox Code Playgroud)

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

EXPOSE gp
Run Code Online (Sandbox Code Playgroud)

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

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

joh*_*s85 19

您需要添加ARG gp到Dockerfile.

...
ARG gp

EXPOSE $gp
...
Run Code Online (Sandbox Code Playgroud)

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

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