2

我让 Gruntlocalhost:8080在 docker 容器中运行节点连接 (grunt-contrib-connect) Web 服务器。我使用以下命令运行容器: $ docker run --rm -it -p 8080:8080 js1972/yeoman:v3.

在我的容器内,我运行 grunt connect 任务grunt develop

我在 Mac 上,所以使用 boot2docker。说主机 ip 是 192.168.59.103 所以我应该在浏览器中使用http://192.168.59.103:8080boot2docker ip访问连接服务器。

但是这不起作用,我只是得到一个 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,杰森。

4

2 回答 2

3

更改localhost0.0.0.0

目前,容器仅在本地接口上侦听内部连接。Using0.0.0.0将告诉它监听所有接口,包括 Docker 主机所连接的接口。

于 2015-02-04T17:20:57.423 回答
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
于 2015-02-05T00:02:49.173 回答