如何与乘客创builddocker形象?

我正在尝试使用导轨应用程序和乘客创build泊坞窗图像。 我读过这篇文章: https : //intercityup.com/blog/how-i-build-a-docker-image-for-my-rails-app.html

它工作良好,gem安装得很好,但是当我打电话给应用程序,我有这个错误:

来自应用程序的消息:libruby.so.2.1:无法打开共享对象文件:没有这样的文件或目录 – /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确实存在。

所以我不明白发生了什么事。

我的docker文件:

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 

并创build/运行图像。

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

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

我的假设是,你使用postgres作为数据库,你在图像中缺lesslibpq-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 

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

边注:

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