我正在尝试在构建阶段使用参数化我的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中不可见。有什么建议吗?
答案 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