我正在为将使用nginx-proxy容器的网络应用程序开发Dockerfile。它也有一个CLI做域名的东西(创建/修改数据库,运行清理作业等)
在99%的情况下,当我启动一个容器时,我想使用webapp。我在Dockerfile中有一个EXPOSE 3000
,这对NGINX代理非常有用。 Nginx代理使用docker-gen,它监听docker的start
和stop
事件,并根据暴露的端口重新构建NGINX配置。
当我想运行一个基于CLI的容器时,问题出现了。我不要想要EXPOSE 3000
。我想解开端口3000,所以NGINX-proxy不会更改NGINX配置。
这可能从docker run
?阅读文档没有给出任何清晰度,并尝试docker run -p ''
没有工作(我得到了docker: No port specified: ::<empty>.
错误)。
说实话,这是一个挑剔的挑剔,并不是什么大不了的。我可以取出Dockerfile中的EXPOSE 3000
,只是在命令行上执行-p 3000
。我只是喜欢把它放在Dockerfile中,所以默认情况下它是开启的,我只需在少数情况下关闭它就可以了。
我也知道我可以使用从第一个继承的第二个Dockerfile。
我只是好奇,如果有可能在我做docker run
(或可能在docker-compose)时取消公开Dockerfile中公开的端口。
酷,是的。重新映射它仍然会导致问题。不过谢谢你的想法! –
如果没有其他人有巧妙的解决方法,我会在几天内接受此答案。我也认为,根据我的测试和文档阅读,是否可以“不公开”发布端口的答案是否定的。 –