代码之家  ›  专栏  ›  技术社区  ›  jpw

无法从网络上的其他计算机浏览停靠的web应用

  •  0
  • jpw  · 技术社区  · 10 年前

    我希望与我的Mac在同一网络上的任何计算机都能够访问在我的Mac上运行的Docked Rails web应用程序。

    在我的Mac(10.9.5)上,当我通过Docker ip和我分配的端口192.168.99.100:3000访问Docker时,我的Rails 4.2.4 web应用程序在Docker中运行良好

    Docker 1.8.1在Virtualbox 5.0.2下运行。

    我正在使用Docker compose和Docker composite的相关部分。yml文件为:

    web:
      build: .
      command: 'bash -c ''bundle exec unicorn -p $PORT -c ./config/unicorn-local.rb'''
      working_dir: /app/user
      env_file:
        - .docker_dev_env_config
        - .docker_dev_env_personal
      environment:
        PORT: 3000
        DATABASE_URL: 'postgres://postgres:@herokuPostgresql:5432/postgres'
      ports:
        - '3000:3000'
      links:
        - herokuPostgresql
    

    我的Dockerfile是

    FROM heroku-ruby2.0.0 # a local image based on heroku/ruby with ruby 2.0.0
    EXPOSE 3000
    ENV widget foo
    

    我的Mac在本地网络上的ip地址始终设置为192.168.0.33。

    我如何允许本地网络上的测试人员通过192.168.0.33:3000访问正在运行的码头化应用程序?

    (FWIW,如果我在Vagrant下运行我的web应用程序,而不是Docker,网络上的其他测试人员可以通过浏览192.168.0.33:3000访问web应用程序。我的Vagrant也在Virtualbox下运行。我的Vagrant文件包含 config.vm.network :forwarded_port, guest: 3000, host: 3000 但我看不到docker-compose.yml的任何等价物)

    2 回复  |  直到 10 年前
        1
  •  1
  •   Sachin Malhotra    10 年前

    您需要将端口3000从VM端口转发到本地主机。为此,您可以运行以下脚本

    VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port$3000,tcp,,$3000,,$3000";
      VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port$3000,udp,,$3000,,$3000";
    

    这将转发到本地主机。如果您想转发到其他接口,则必须在命令中提供该接口的IP地址。这是 --natpf 命令

    [--natpf<1-N> [<rulename>],tcp|udp,[<hostip>],<hostport>,[<guestip>],<guestport>]
    

    因此您可以相应地修改它。 有关进一步阅读,请参阅本节。 Docker on Mac. The Missing Guide

        2
  •  0
  •   jpw    10 年前

    使用docker工具包的docker Quickstart终端应用程序时创建的“默认”Virtualbox没有定义ssh以外的任何端口。

    当VirtualBox与Docker一起使用时,Mac上的解决方案是:

    • 运行VirtualBox
    • 单击“默认”框(或Docker安装程序使用的任何框)
    • 转到“设置”>网络>适配器1
    • 单击“端口转发”
    • 创建一个新规则,例如fwds 3000到3000 (请确保将主机ip列留空)

    setting up port forward on vagrant