如何在docker容器中运行grunt connect

如何在docker容器中运行grunt connect,docker,boot2docker,grunt-contrib-connect,Docker,Boot2docker,Grunt Contrib Connect,我让Grunt在docker容器中的localhost:8080上运行节点连接Grunt contrib connect web服务器。我使用以下命令运行容器: $docker-run-rm-it-p8080:808080js1972/yeoman:v3 在我的容器中,我使用grunt develop运行grunt connect任务 我在Mac电脑上,所以使用boot2docker。boot2docker ip表示主机ip为192.168.59.103,因此我应该在浏览器中使用访问connec

我让Grunt在docker容器中的localhost:8080上运行节点连接Grunt contrib connect web服务器。我使用以下命令运行容器: $docker-run-rm-it-p8080:808080js1972/yeoman:v3

在我的容器中,我使用grunt develop运行grunt connect任务

我在Mac电脑上,所以使用boot2docker。boot2docker ip表示主机ip为192.168.59.103,因此我应该在浏览器中使用访问connect服务器

然而,这不起作用,我只是收到一条safari无法连接到服务器的消息。请注意,当我使用一个简单的python web服务器(如docker网站示例中所示)时,端口转发工作正常

你知道这是怎么回事吗?在docker之外,同样的过程也能很好地工作。 我觉得这与在本地主机上运行Connect有关。我尝试了各种-add hosts和-p localhost:8080:8080的组合,但都没有效果

如果有帮助,这是我的docker文件和Grunfile:

Rgds,Jason。

将localhost更改为0.0.0.0


目前,容器仅侦听本地接口上的内部连接。使用0.0.0.0将告诉它侦听所有接口,包括Docker主机连接到的接口。

在GrunFile的连接设置中修改主机名的ip:

// The actual grunt server settings
connect: {
  options: {
    port: 8080,
    // Change this to '0.0.0.0' to access the server from outside.
    hostname: '0.0.0.0',
    livereload: 35729
  },
并打开服务器并将端口重新加载到boot2docker vm:

boot2docker poweroff # vm needs to be off to modify the network settings
VBoxManage modifyvm "boot2docker-vm" --natpf1 "containergruntserver,tcp,,8080,,8080"
VBoxManage modifyvm "boot2docker-vm" --natpf1 "containergruntreload,tcp,,35729,,35729"
boot2docker up

尝试将连接中的localhost更改为0.0.0.0Hanks Adrian-这就成功了,我从未想到过。现在需要了解0.0.0.0、localhost和127.0.0.1之间的差异-凉的0.0.0.0只侦听所有网络接口。127.0.0.1仅侦听本地环回接口IIRC。如果可以的话,我会添加一个答案。