我有两个运行在不同容器中的服务,一个是grunt(应用程序),运行在9000端口,另一个是sails.js(服务器),运行在1337端口。我想尝试让客户端应用通过localhost:1337连接到服务器。这可行吗?谢谢。
我有两个运行在不同容器中的服务,一个是grunt(应用程序),运行在9000端口,另一个是sails.js(服务器),运行在1337端口。我想尝试让客户端应用通过localhost:1337连接到服务器。这可行吗?谢谢。
您无法使用localhost
连接到其他容器(因为localhost
是当前容器),但是您可以通过运行您的容器的主机来进行连接。在您的情况下,您需要使用boot2docker VM IP (echo $(boot2docker ip)
)。为了使其起作用,您需要在主机级别公开端口(这是通过-p 1337:1337
完成的)。
另一个最常见且我在可能情况下喜欢的解决方案是链接容器。
您需要在服务器docker run
命令中添加--name标志:--name sails_server
您需要在应用程序docker run
命令中添加--link标志:--link sails_server:sails_server
在应用程序内部,您将能够在sail_server:1337
处访问服务器。您还可以使用环境变量来获取服务器IP。请参阅文档:https://docs.docker.com/userguide/dockerlinks/
您的运行命令可能开始有点长...在这种情况下,我喜欢使用docker-compose,它允许我在一个文件中定义我的容器及其关系(卷、名称、链接、命令...)。
如果您在docker运行命令中使用参数-p 1337:1337,它将会将容器内的1337端口暴露到本地主机的1337端口。
/etc/hosts
文件,这样你就可以直接使用sails_server
了。 - Céline Aussourd