我正在尝试基于瘦服务器构建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完全相同的命令启动服务器,应用程序启动并按预期运行。
这是我不明白的。任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
我知道这个问题已经很老了,但是我只是面临着完全相同的问题,因此在Thin中添加--threaded
选项似乎已经解决了这个问题。