这些天,我读了很多关于如何设置和运行Docker堆栈的信息。但是我一直想念的一件事是如何设置特定容器通过域名响应访问权限,而不仅仅是使用docker dns的容器名称。

我的意思是说我有一个可以从外部访问的微服务,例如:users.mycompany.com,它将进入处理用户api的微服务容器

然后,当我尝试访问customer-list.mycompany.com时,它将进入处理客户列表的微服务容器

当然,使用docker dns可以访问它们并将它们链接到docker网络,但这仅对于希望访问容器到容器而不是Internet到容器有效。

有人知道我该怎么做吗?或设置的最佳方法。

最佳答案

因此,您需要使用端口发布的概念,以便可以通过主机的端口访问容器中的端口。使用此功能,您可以从Nginx设置一个简单的proxy_pass,它将users.mycompany.com重定向到myhost:1337(假设您将端口发布到1337)

因此,如果要执行此操作,则需要使用以下命令设置容器以暴露特定端口:

docker run -d -p 5000:5000 training/webapp # publish image port 5000 to host port 5000

然后,您可以从主机中 curl localhost:5000以访问该容器。
curl -X GET localhost:5000

如果要在前面设置域名,则需要有一个Web服务器实例,该实例允许您将主机名proxy_pass传递到容器中。

即在Nginx中:
server {
  listen 80;
  server_name users.mycompany.com;
  location / {
    proxy_pass http://localhost:5000;
  }
}

我建议您关注this tutorial,然后检查docker run reference

关于docker - 如何在Docker中为容器分配域名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40867727/

10-12 18:32
查看更多