如何在docker容器中运行grunt-connect

时间:2015-02-03 13:21:32

标签: docker boot2docker grunt-contrib-connect

我让Grunt在docker容器中的localhost:8080上运行节点连接(grunt-contrib-connect)Web服务器。我用这个命令运行容器: $ docker run --rm -it -p 8080:8080 js1972/yeoman:v3

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

我在Mac上使用boot2docker。 boot2docker ip表示主机IP为192.168.59.103,因此我应该在浏览器中使用http://192.168.59.103:8080访问连接服务器。

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

这里有什么想法吗?同样的过程在docker之外完美运行。 我感觉它与在localhost上运行Connect有关。我尝试了各种组合--add-hosts和-p localhost:8080:8080等等无济于事......

如果它有助于我的docker文件和gruntfile: https://dl.dropboxusercontent.com/u/7546923/Dockerfile https://dl.dropboxusercontent.com/u/7546923/Gruntfile.js

Rgds,Jason。

2 个答案:

答案 0 :(得分:3)

localhost更改为0.0.0.0

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

答案 1 :(得分:1)

在Gruntfile的连接设置中修改主机名的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