首页 > 解决方案 > 将 docker 容器端口绑定到路径

问题描述

Docker 菜鸟在这里。已经设置了一个带有 docker 容器的开发服务器。我能够运行基本容器。例如

docker run --name node-test -it -v "$(pwd)":/src -p 3000:3000 node bash

按预期工作。一旦我有很多小项目,我想绑定/监听实际的 http localhost 路径而不是端口。类似的东西

docker run --name node-test -it -v "$(pwd)":/src -p 3000:80/node-test node bash

是否可以?谢谢。

编辑。基本上我想输入localhost/node-test而不是localhost:3000在我的浏览器窗口中

标签: httpdocker

解决方案


听起来您想要的是让您的 Docker 容器响应 URL,例如通过在 Docker选项http://localhost/some/random/path中以某种方式指定该路径。--port

对此的简短回答是否定的,这是不可能的。原因是端口与路径没有任何关系——HTTP 服务器侦听端口,并为在路径中找到资源提供服务。请注意,有许多不同类型的服务器,它们都侦听某个端口,但其中许多(大多数?)根本没有路径的概念。例如,考虑一个 SMTP(邮件传输)服务器——它经常监听端口 25,但路径对它意味着什么?它所做的只是将邮件从一台服务器传输到另一台服务器。

有两种方法可以完成您正在尝试做的事情:

  1. 编写您的应用程序以响应特定路径。例如,如果您在节点应用程序中使用 Express 框架,请为您想要的路径创建一个路由。

  2. 使用代理服务器接受一条路径上的请求并将它们中继到正在侦听另一条路径的服务器。

请注意,这与 Docker 无关——如果您在任何服务器上运行应用程序,您将面临相同的两个选项。


推荐阅读