来自现有Rails / Unicorn / MySQL应用程序的Docker镜像
我是Docker的新手,并尝试通过从现有的Rails / Unicorn / MySQL应用程序创build一个图像。 我的文件在下面,图像成功创build,但我不清楚是否实际上正常工作,因为我无法访问传统的Unicorn本地主机URL或boot2docker IP。
所以我的问题是,如何在运行Docker镜像的OSX上本地访问Unicorn服务器?
Dockerfile
# Dockerfile FROM seapy/rails-nginx-unicorn # Publish port 8080 EXPOSE 8080 CMD ["bundle", "exec","unicorn", "-p", "8080"]
Docker镜像运行命令
docker run --name games-app --link test-mysql:mysql -p 8080 -d -e SECRET_KEY_BASE=test sample_rails_games_app
Docker PS输出
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cf9c45d62763 sample_rails_games_app "bundle exec unicorn 17 minutes ago Up 17 minutes 0.0.0.0:32777->8080/tcp games-app 93485cb7bcca mysql "/entrypoint.sh mysq 6 hours ago Up 6 hours 3306/tcp test-mysql
如果我尝试打localhost:8080
或http://192.168.59.103:8080/
我得到一个Gateway Timeout: can't connect to remote host
Docker日志输出
docker logs cf9c45d62763 I, [2015-07-30T22:44:44.941674 #1] INFO -- : listening on addr=0.0.0.0:8080 fd=9 I, [2015-07-30T22:44:44.941927 #1] INFO -- : worker=0 spawning... I, [2015-07-30T22:44:44.944000 #1] INFO -- : master process ready I, [2015-07-30T22:44:44.944836 #8] INFO -- : worker=0 spawned pid=8 I, [2015-07-30T22:44:44.945103 #8] INFO -- : Refreshing Gem list I, [2015-07-30T22:44:46.729708 #8] INFO -- : worker=0 ready
我也尝试了从这里boot2docker解决方法无济于事: https : //github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md
任何指导,非常感谢。
您必须使用boot2docker虚拟机的eth1地址。
从shell运行:
boot2docker ssh
接着
ifconfig eth1 docker@boot2docker:~$ ifconfig eth1 eth1 Link encap:Ethernet HWaddr 08:00:27:69:53:F6 inet addr:192.168.59.103 Bcast:192.168.59.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe69:53f6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:170143 errors:0 dropped:0 overruns:0 frame:0 TX packets:98176 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:107722766 (102.7 MiB) TX bytes:13713741 (13.0 MiB) docker@boot2docker:~$
192.168.59.103
是你想从你的Mac使用的地址。 端口取决于您正在转发的端口。 例如在这种情况下:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2e1d63d6928a f6ac7e4116f3 "/usr/sbin/sshd -D - 3 hours ago Up About an hour 0.0.0.0:32771->22/tcp mad_jones 104f730aa7da f6ac7e4116f3 "/usr/sbin/sshd -D - 3 hours ago Up About an hour 0.0.0.0:32770->22/tcp reverent_almeida
它是32771
或32770
。 在这个例子中,它是一个sshd服务器运行在你的情况下,它将是你的独angular兽,这将是端口32777
所以我认为你连接到正确的地址,但你需要连接到32777
而不是。
希望能帮助到你。