gpt4 book ai didi

docker - 如果我在 Dockerfile 中使用 EXPOSE $PORT ,我可以在使用 `docker run` 时取消暴露它的端口吗?

转载 作者:行者123 更新时间:2023-12-04 15:32:51 29 4
gpt4 key购买 nike

我正在为将使用 nginx-proxy 的 Web 应用程序开发 Dockerfile容器。它还具有用于执行应用程序域内容的 CLI(创建/修改数据库、运行清理作业等)

在 99% 的情况下,当我启动容器时,我想使用 webapp。我有一个 EXPOSE 3000在 Dockerfile 中,这对于 NGINX 代理非常有效。 Nginx-proxy 使用 docker-gen ,它监听 docker 的 startstop事件并根据暴露的端口重新构建 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 .

关于docker - 如果我在 Dockerfile 中使用 EXPOSE $PORT ,我可以在使用 `docker run` 时取消暴露它的端口吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33534363/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com