使用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