ruby-on-rails – 如何使用乘客创建泊坞窗图像?

我正在尝试用rails应用程序和乘客创建一个docker镜像.
我读过这篇文章:https://intercityup.com/blog/how-i-build-a-docker-image-for-my-rails-app.html

它工作得很好,宝石安装得很好,但是当我调用应用程序时,我有这个错误:

Message from application: libruby.so.2.1: cannot open shared object file: No such file or directory – /home/app/webapp/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0/pg-0.18.3/pg_ext.so (LoadError)

当我连接到图像时,文件/home/app/webapp/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0/pg-0.18.3/pg_ext.so确实存在.

所以我不明白发生了什么.

我的码头文件:

FROM phusion/passenger-ruby21:0.9.12
MAINTAINER Eric L'Hostis "eric.lhostis@gmail.com"

# Set correct environment variables.
ENV HOME /root

# Use baseimage-docker's init system.
CMD ["/sbin/my_init"]

# Conf Nginx / Passenger
RUN rm -f /etc/service/nginx/down
RUN rm /etc/nginx/sites-enabled/default
ADD nginx.conf /etc/nginx/sites-enabled/webapp.conf

# Prepare folders
RUN mkdir /home/app/webapp
WORKDIR /tmp
ADD Gemfile /tmp/
ADD Gemfile.lock /tmp/
RUN bundle install

# Add the rails app
ADD . /home/app/webapp

并创建/运行图像.

docker build -t myimage .
docker run -d -p 80:80 myimage

我已经尝试安装这些库:libpq-dev,nodejs,build-essential,postgresql
没有成功 :(

最佳答案
我的假设是你使用postgres作为数据库,你在图像中缺少libpq-dev.

在使用docker部署rails应用程序时我不使用乘客,但我认为您应该检查是否已安装lib.

您可以尝试添加:

RUN apt-get install -y libpq-dev 

在你的DOCKERFILE中安装lib.

甚至更好:

RUN apt-get update && \
    apt-get install -y libpq-dev --no-install-recommends && \
    rm -rf /var/lib/apt/lists/* && \
    apt-get clean

如果你想让你的形象尽可能小.

边注:

在我看来,你使用的基本图像包含巨大的开销.使用docker时,我的图像通常小于400 MB.您使用的基本映像约为960 MB.您应该检查是否可以使用:latest,因为它更小(~211 MB).

转载注明原文:ruby-on-rails – 如何使用乘客创建泊坞窗图像? - 代码日志