我希望与我的Mac在同一网络上的任何计算机都能够访问在我的Mac上运行的dockerized Rails网络应用程序。
在我的Mac(10.9.5)上,当我通过docker ip和我指定的端口访问时,我的Rails 4.2.4 Web应用程序在Docker中正常运行,192.168.99.100:3000
Docker 1.8.1在Virtualbox 5.0.2下运行。
我正在使用Docker-compose,而docker-compose.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访问正在运行的dockerized app?
(如果我在Vagrant下运行我的网络应用程序 - 而不是Docker - 网络上的其他测试人员可以通过浏览192.168.0.33:3000访问网络应用程序。我的Vagrant也在Virtualbox下运行。我的Vagrantfile包含{{1但是我没有看到docker-compose.yml的任何等价物)
答案 0 :(得分:1)
您需要将端口3000从VM转发到本地主机。为此,您可以运行以下脚本
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port$3000,tcp,,$3000,,$3000";
VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port$3000,udp,,$3000,,$3000";
这将转发到您的localhost。如果要将端口转发到其他某个接口,则必须在命令中提供该接口的IP地址。这是--natpf
命令
[--natpf<1-N> [<rulename>],tcp|udp,[<hostip>],<hostport>,[<guestip>],<guestport>]
所以你可以相应地修改它。 请参阅此内容以进一步阅读。 Docker on Mac. The Missing Guide
答案 1 :(得分:0)