来自现有 Rails/Unicorn/MySQL 应用程序的 Docker 镜像

标签 docker containers boot2docker

我是 Docker 新手,并通过从现有 Rails/Unicorn/MySQL 应用程序创建镜像来进行试验。我的文件在下面,图像成功创建,但我不清楚事情是否真的正常工作,因为我无法访问传统的 Unicorn localhost 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:8080http://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 地址。

从外壳运行:

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

要么是 3277132770 .在这个例子中,它是一个 sshd 服务器,在你的情况下它是你的 unicorn ,它是端口 32777。所以我认为您正在连接到正确的地址,但您需要连接到 32777反而。

希望能帮助到你。

关于来自现有 Rails/Unicorn/MySQL 应用程序的 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31735529/

相关文章:

Docker 桌面在 Windows 10 中启动时崩溃

bash - 连接到 docker 容器的命令行快捷方式

windows - Boot2docker/Windows : can't run bash on Ubuntu container

maven - 如何为 docker shell gitlab runner 安装 maven

mysql - Docker Compose 收到错误 ECONNREFUSED 127.0.0.1 :3306 with MySQL and NodeJS

postgresql - Kubernetes:数据库和数据库用户

windows - 有人如何上传容器并在我的 Docker 服务器上运行它?

macos - 在 OSX 上将卷挂载到 Docker 镜像

docker - 无法在docker-compose中使用变量替换

docker - Docker Swarm在 'docker stack deploy'之后重复了容器