这些天我正在阅读很多关于如何设置和运行 docker 堆栈的信息。但是我总是错过的一件事是如何设置特定容器通过其域名响应访问,而不仅仅是使用 docker dns 的容器名称。
我的意思是,也就是说我有一个可以从外部访问的微服务,例如:users.mycompany.com,它将通过处理用户 api 的微服务容器
然后,当我尝试访问 customer-list.mycompany.com 时,它将进入处理客户列表的微服务容器
当然,使用 docker dns 我可以访问它们并将它们链接到 docker 网络,但这仅适用于想要访问容器到容器,而不是互联网到容器。
有人知道我应该怎么做吗?或者设置它的最佳方式。
原文由 Christopher Thomas 发布,翻译遵循 CC BY-SA 4.0 许可协议
因此,您需要使用端口发布的概念,以便您的容器中的端口可以通过主机的端口访问。使用它,您可以从 Nginx 设置一个简单的 _proxypass ,它将
users.mycompany.com
重定向到myhost:1337
( 假设您将端口发布到1337
)因此,如果您想这样做,您需要设置您的容器以使用以下方式公开某个端口:
然后,您可以从主机 curl
localhost:5000
访问容器。如果你想在前面设置一个域名,你需要有一个网络服务器实例,它允许你将你的主机名 代理 传递给你的容器。
即在 Nginx 中:
我建议您按照 本教程 进行操作,并可能检查 docker run 参考。