【问题标题】:How to run grunt-connect within docker container如何在 docker 容器中运行 grunt-connect
【发布时间】:2015-04-02 17:05:06
【问题描述】:

我让 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,杰森。

【问题讨论】:

  • 尝试将连接中的“localhost”更改为“0.0.0.0”
  • 感谢阿德里安 - 这成功了,我从来没有想过它。现在需要阅读 0.0.0.0、localhost 和 127.0.0.1 之间的区别。 ;-)
  • 酷。 0.0.0.0 只监听所有网络接口。 127.0.0.1 只监听本地环回接口 IIRC。如果可以,我会添加答案。

标签: docker boot2docker grunt-contrib-connect


【解决方案1】:

localhost 更改为0.0.0.0

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

【讨论】:

    【解决方案2】:

    在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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多