2014-09-04 7 views
5

मुझे लगता है कि यह एक पर्यावरण समस्या है। जब मैं इसे मैन्युअल रूप से करता हूं (बिना डॉकरफ़ाइल के) यह काम करता है।रूबी ऑन रेल्स पर्यावरण (डॉकरफाइल से) के लिए डॉकर छवि बनाने में त्रुटि

यहाँ मेरी 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 

से मैं के साथ निर्माण:

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 का उपयोग करते हुए बिना एक खोल मुश्किल है। आरवीएम का बिंदु रूबी के कई इंस्टॉलेशन प्रबंधित करना है, और डॉकर के साथ आपको इसकी आवश्यकता नहीं है। बस कुछ काम करने वाली रूबी बेस छवि के साथ जाएं, उदाहरण के लिए बाइनरीफाइल/रूबी (https://registry.hub.docker.com/u/binaryphile/ruby/), या आप मेरी आरबीएनवी आधारित छवि का उपयोग कर सकते हैं: cthulhu666/docker-rbenv (https://registry.hub.docker.com/u/cthulhu666/docker-rbenv/) यदि आप चीजों को रूट के रूप में स्थापित करना पसंद नहीं करते हैं (और मैं आपको चीजों को जड़ के रूप में स्थापित करने के लिए प्रोत्साहित नहीं करता)। एक sidenote के रूप में, Dockerfile में 'apt-get उन्नयन' करना एक बुरा अभ्यास माना जाता है। – cthulhu

उत्तर

7

लाइन तुम वहाँ में मिल गया है के बजाय RUN /bin/bash -l -c "gem install rails -v 4.1.5" की कोशिश करो। क्या यह कुछ बदलता है?

+1

मुझे एक ही त्रुटि मिलती है। – James

+0

क्या होता है जब आप सभी आरवीएम इंस्टॉल लाइनों के लिए '/ bin/bash -l -c' या समान'/bin/sh' कमांड का उपयोग करते हैं? –

+0

यह काम करता है। धन्यवाद। – James

0

आप इसे उपयोग करने के लिए सक्षम होने से पहले rubygems स्थापित करने की आवश्यकता:

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

मुझे लगता है कि त्रुटि मिलती है ।

RUN apt-get install rubygems 

यह भी देखें: Can I install gems with apt-get on Ubuntu?

+2

आरवीएम इसका ख्याल रखता है। – cthulhu

+0

आम तौर पर रूबीजम्स को योग्यता से स्थापित करना एक बुरा विचार है, आप परेशानी के लिए पूछ रहे हैं :) –

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 
संबंधित मुद्दे