Docker

时间:2018-06-15 18:14:29

标签: ruby docker thin

我正在尝试基于瘦服务器构建Ruby应用程序的Docker镜像。首先,让我告诉你我的dockerfile:

FROM centos:7.4.1708
WORKDIR /opt/myapp
ENV PATH=/opt/myapp/ruby/bin:${PATH}
ENV GEM_HOME=/opt/myapp/vendor/bundle/ruby/2.4.0
CMD /opt/myapp/vendor/bundle/ruby/2.4.0/bin/bundle exec thin -C /opt/myapp/config/thin.yml start
EXPOSE 9292

directrory“myapp”包含所有gem依赖项以及Ruby二进制文件。构建图像后,我尝试运行图像:

docker run -d myapp:latest

图像在启动后立即关闭。

Docker日志输出:

Starting thin myapp...
Starting server on 0.0.0.0:9292 ...

Docker ps -a输出:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
081e3d6fa8c1        99880f8f67d4        "/bin/sh -c '/opt/my…"   3 seconds ago       Exited (0) 2 seconds ago                       cocky_bohr

但是,当我使用Bash命令运行相同的图像时:

docker run -it myapp:latest bash

然后使用与dockerfile的CMD完全相同的命令启动服务器,应用程序启动并按预期运行。

这是我不明白的。任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我知道这个问题已经很老了,但是我只是面临着完全相同的问题,因此在Thin中添加--threaded选项似乎已经解决了这个问题。