2014-09-04 85 views
5

我想這是一個環境問題。 當我手動(沒有Dockerfile)的時候它可以工作。爲Ruby On Rails環境(來自Dockerfile)創建Docker鏡像時出錯

這裏是我的Dockerfile:

FROM ubuntu:14.04 
RUN apt-get update 
RUN apt-get upgrade --assume-yes 
RUN apt-get install wget vim git --assume-yes 
# install RVM 
RUN apt-get install build-essential curl --assume-yes 
RUN curl -L https://get.rvm.io | bash -s stable 
RUN echo 'source /etc/profile.d/rvm.sh' >> ~/.bashrc 
RUN /usr/local/rvm/bin/rvm-shell -c "rvm requirements" 
# install Ruby 
RUN /usr/local/rvm/bin/rvm-shell -c "rvm autolibs enable" 
RUN /usr/local/rvm/bin/rvm-shell -c "rvm install 2.1.2" 
# install Rails 
RUN echo "gem: --no-rdoc --no-ri" >> ~/.gemrc 
RUN gem install rails -v 4.1.5 
# install nodeJS 
RUN sudo apt-get install nodejs --assume-yes 
EXPOSE 3000 

比我建設有:

sudo docker build -t="james/rails" . 

我得到這個錯誤:

Step 11 : RUN gem install rails -v 4.1.5 
---> Running in 44efc6b7c254 
/bin/sh: 1: gem: not found 
2014/09/04 18:33:52 The command [/bin/sh -c gem install rails -v 4.1.5] returned a non-zero code: 127 
+1

使用RVM無殼是棘手。另外rvm的要點是管理多個ruby安裝,而docker則不需要。只要去一些工作的紅寶石基礎圖像,例如binaryphile/ruby​​(https://registry.hub.docker.com/u/binaryphile/ruby/),或者你可以使用我的基於rbenv的鏡像:cthulhu666/docker-rbenv( https://registry.hub.docker.com/u/cthulhu666/docker-rbenv/),如果你不喜歡以root身份安裝東西(我鼓勵你不要以root身份安裝東西)。作爲一個旁註,在Dockerfile中執行'apt-get upgrade'被認爲是不好的做法。 – cthulhu 2014-09-04 18:36:21

回答

7

嘗試RUN /bin/bash -l -c "gem install rails -v 4.1.5",而不是你在那裏已經得到了線。這會改變什麼嗎?

+1

我得到同樣的錯誤。 – James 2014-09-06 12:41:43

+0

當您對所有RVM安裝行使用'/ bin/bash -l -c'或類似的'/ bin/sh'命令時會發生什麼? – 2014-09-17 15:09:06

+0

工作。謝謝。 – James 2014-09-18 18:43:45

0

你需要能夠使用它之前安裝的RubyGems 。

RUN apt-get install rubygems 

還看到:Can I install gems with apt-get on Ubuntu?

+2

RVM負責。 – cthulhu 2014-09-04 18:33:33

+0

通常從aptitude安裝RubyGems是一個糟糕的主意,你需要麻煩:) – 2015-04-14 22:11:35

2

與亞歷克斯Lynham的幫助下,這裏的工作Dockerfile:

FROM ubuntu:14.04 

RUN apt-get update 
RUN apt-get install wget vim git --assume-yes 

# install RVM 
RUN apt-get install build-essential curl --assume-yes 
RUN curl -L https://get.rvm.io | bash -s stable 
RUN echo 'source /etc/profile.d/rvm.sh' >> ~/.bashrc 
RUN /usr/local/rvm/bin/rvm-shell -c "rvm requirements" 

# install Ruby 
RUN /bin/bash -l -c "rvm autolibs enable" 
RUN /bin/bash -l -c "rvm install 2.1.2" 

# install Rails 
RUN echo "gem: --no-rdoc --no-ri" >> ~/.gemrc 
RUN /bin/bash -l -c "gem install rails -v 4.1.5" 

# install nodeJS 
RUN sudo apt-get install nodejs --assume-yes 

EXPOSE 3000 
相關問題