将Docker容器端口绑定到路径

时间:2018-06-30 04:08:46

标签: http docker

Docker noob在这里。用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

1 个答案:

答案 0 :(得分:2)

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

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

有两种方法可以完成您想做的事情:

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

  2. 使用proxy server接受一条路径上的请求,并将其中继到正在侦听另一条路径的服务器上。

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