我尝试基于构建参数(DEBUG_ENABLED)在Dockerfile中公开调试端口。此映像最终会进入一个k8s pod,该pod位于一个集群上,该集群上有多个运行各种应用程序的pod。我试图暴露端口在所有的图像的基础上构建参数。
下面是我的Dockerfile:
ARG DEBUG_ENABLED=true
:
:
EXPOSE 8080
RUN if [ "$DEBUG_ENABLED" = "true" ] ; \
then EXPOSE 8000 ; \
else echo "debug is set to false"; \
fi
ENTRYPOINT ["catalina.sh", "run"]
我知道“EXPOSE”语句在RUN if...
结构中不起作用。但有没有办法实现我的目标呢?
1条答案
按热度按时间rur96b6h1#
我也在寻找解决方案。
我知道
EXPOSE
只是某种图像文档。但我觉得这真的很有用直接否
答案是
NO
。所以我必须为此创建2个(或更多)
dockerfile
。解决方法
也许从STDIN构建(由其他程序生成dockerfile)可以是一个解决方案。
但它真的不是那么直接有效
//这与动态创建dockerfile没有什么不同。
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#pipe-dockerfile-through-stdin
https://docs.docker.com/build/building/context/#text-files
https://docs.docker.com/engine/reference/builder/#environment-replacement:~:text=Dockerfile 通过STDIN