首页 文章

使用Docker compose传递Dockerfiles的参数

提问于
浏览
4

我正在尝试在构建阶段使用参数化我的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 回答

  • 11

    您需要将 ARG gp 添加到Dockerfile .

    ...
    ARG gp
    
    EXPOSE $gp
    ...
    

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

    值得一提的是,这不是通过compose运行它,你需要为你的docker-compose.yml添加 ports 指令 .

  • 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
    

相关问题