使用Docker传递Dockerfiles的参数组成

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

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

我试图将名为gp的parameter passing给Dockerfile.bpp,在启动Python应用程序时使用参数,暴露一个端口等。例如,在dockerfile.bpp中试图公开端口gp,如下所示:

 EXPOSE gp 

但是,通过命令docker-compose编译构builddocker文件时,出现以下错误:错误:服务“bpp”无法生成:无效的containerPort:gp

看起来参数gp在dockerfile中是不可见的。 有什么build议么?

您需要将ARG gp添加到您的Dockerfile。

 ... ARG gp EXPOSE $gp ... 

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

值得一提的是,这不会揭示端口,当你通过撰写运行它,你需要添加一个ports指令到你的docker-compose.yml。

首先, 语法是 :

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

所以试试gp: 8080 ,而不是gp : 8080

其次,请确保您使用的是docker-compose.yml格式的版本2 。

三,试试

 EXPOSE $gp