2014-09-04 3 views
5

Я предполагаю, что это проблема с окружающей средой. Когда я делаю это вручную (без Dockerfile), он работает.Ошибка при создании образа Docker для среды Ruby On Rails (из файла 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, и с докером вам это не нужно. Просто зайдите с некоторым рабочим изображением на основе рубина, например 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). Как побочный элемент, выполнение apt-get upgrade в Dockerfile считается плохой практикой. – cthulhu

ответ

7

Попробуйте RUN /bin/bash -l -c "gem install rails -v 4.1.5" вместо линии вы получили там. Это что-то меняет?

+1

У меня такая же ошибка. – James

+0

Что происходит, когда вы используете '/ bin/bash -l -c' или аналогичную команду'/bin/sh' для всех строк установки RVM? –

+0

Это работает. Благодарю. – James

0

Вам нужно установить RubyGems прежде чем он сможет использовать его ,

RUN apt-get install rubygems 

Смотри также: Can I install gems with apt-get on Ubuntu?

+2

RVM позаботится об этом. – cthulhu

+0

Как правило, это плохая идея установить RubyGems из aptitude, вы просите о проблемах :) –

2

С помощью Alex 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 
Смежные вопросы