我正在为使用nginx-proxy容器的Web应用程序开发Dockerfile 。它还具有一个用于执行应用程序域内容(创建/修改数据库,运行清理作业等)的CLI。
在99%的情况下,启动容器时,我想使用webapp。我EXPOSE 3000在Dockerfile中有一个,对于NGINX-proxy来说效果很好。Nginx的代理用途泊坞窗根,它侦听码头工人start和stop事件和NGINX配置基础上暴露的端口重新建立。
当我想运行基于CLI的容器时,就会出现问题。我不想要EXPOSE 3000。我要取消公开端口3000,因此NGINX-proxy不会更改NGINX配置。
这是可能的docker run吗?阅读文档并不清楚,尝试docker run -p ''也没有用(我得到了一个docker: No port specified: ::<empty>.错误)。
老实说,这有点无聊,没什么大不了的。我可以带EXPOSE 3000出Dockerfile的,只是做-p 3000在命令行上。我只是喜欢将其包含在Dockerfile中,因此默认情况下它是打开的,我只需要在少数情况下将其关闭即可。
我也知道我可以使用从第一个继承的第二个Dockerfile。
我只是想知道是否可以在发布时取消发布在Dockerfile中公开的端口docker run(或者可能在docker -compose中)。
即使几年过去了,情况也没有太大改变。没有 UNEXPOSE,但至少有一个解决方法,可以使用“ docker save”和“ docker load”来编辑 docker 镜像的元数据。至少为了删除卷和端口,我创建了一个可以自动执行任务的小脚本,请参阅docker-copyedit。
据我所知,现在这是不可能的。你能做的最好的事情就是使用该-P选项将 3000 映射到某个随机端口,这样它就不会与主容器实例冲突,例如
docker run -it -P <some-image>
Run Code Online (Sandbox Code Playgroud)
这将导致以下结果docker ps
main_container 0.0.0.0:3000->3000/tcp
run_container 0.0.0.0:32769->3000/tcp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2496 次 |
| 最近记录: |