2014-09-04 82 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 
相关问题