2015-10-25 16 views
4

我正在嘗試使用導軌應用程序和乘客創建泊塢窗圖像。 我讀這篇文章:https://intercityup.com/blog/how-i-build-a-docker-image-for-my-rails-app.html如何與乘客創建碼頭圖像?

它的工作好,寶石安裝好,但是當我打電話的應用程序,我有這樣的錯誤: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真的存在。

所以我不明白髮生了什麼事。

我的搬運工文件:

FROM phusion/passenger-ruby21:0.9.12 
MAINTAINER Eric L'Hostis "[email protected]" 

# 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,建立必要的,PostgreSQL的 沒有成功:(

+0

你檢查過這個文件或文件夾的權限嗎?我們有同樣的問題,然後我們無法啓動我們的服務器,它通過dockerfile添加到圖像中,因爲它具有錯誤的權限。 – Stanislav

+0

我想有些第三方庫(可能是pg_ext.so的依賴項)缺失 –

+0

特權很好@Stanislav。我只有root用戶。 – elhostis

回答

0

我的假設是,你正在使用的Postgres數據庫和你。在你的圖像丟失libpq-dev

與搬運工人部署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 

如果您wan't你的形象要儘可能小。

旁註:

在我看來,你正在使用的基本圖像蘊含着巨大的開銷。使用碼頭工具時,我的圖像通常小於400 MB。您使用的基本映像是〜960 MB。你應該檢查你是否可以使用:latest,因爲它比較小(〜211 MB)。

+0

我試過了,它不起作用。這個庫仍然安裝:「libpq-dev已經是最新版本」。那麼,同樣的錯誤呢。 – elhostis