最佳答案
Docker 不直接支持您所描述的内容。唯一networking setup它确实支持开箱即用的每个应用程序的专用网络,并通过 NAT 连接到主机;如果您认为需要某种更复杂的拓扑、流量拦截器或自动代理,那么您就处于“手动构建”的境地。
在你展示的图表中,有两件事引起了我的注意。 “应用程序 1”和“应用程序 2”显示在同一个容器中,这很少是最佳实践。每个组件都显示有一个 localhost
URL,但这也是一个稍微微妙的主题(在 Docker 容器内,容器本身是 localhost
)。
一个非常典型的设置本身并不使用自动流量拦截,而只是让外部客户端以某种反向代理为目标。这看起来更像
+- Docker network ----------------------+
| +- Container -+ +- Container -+ |
| | Application | <-- | Nginx Proxy | <---- Client
| +-------------+ +-------------+ |
+---------------------------------------+
您可以使用以下方式启动此堆栈
docker network create appnet
docker run --net appnet --name application my/application
docker run --net appnet --name nginx_proxy -p 8081:80 my/nginx
由于两个容器位于同一 Docker 网络上,因此 nginx 配置可以 proxy_pass http://application/;
。由于 -p
选项,外部客户端可以访问 http://host.example.com:8081/
并转到代理。
关于java - 如何实现这样的流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56644839/