Ich habe eine Dockerfile, die einen Ruby on Rails-Stack definiert. HierLinux-Quellbefehl funktioniert nicht beim Erstellen von Dockerfile
ist die Dockerfile:
FROM ubuntu:14.04
MAINTAINER example <[email protected]>
# Update
RUN apt-get update
# Install Ruby and Rails dependencies
RUN apt-get install -y \
ruby \
ruby-dev \
build-essential \
libxml2-dev \
libxslt1-dev \
zlib1g-dev \
libsqlite3-dev \
nodejs \
curl
RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
RUN curl -sSL https://get.rvm.io | bash -s stable --rails
RUN /bin/bash -c "source /usr/local/rvm/scripts/rvm"
# Install Rails
RUN gem install rails
# Create a new Rails app under /src/my-app
RUN mkdir -p /src/new-app
RUN rails new /src/new-app
WORKDIR /src/my-app
# Default command is to run a rails server on port 3000
CMD ["rails", "server", "--binding", "0.0.0.0", "--port" ,"3000"]
EXPOSE 3000
Wenn ich den Befehl docker build -t anotherapp/my-rails-app .
ich die folgende Fehlermeldung aus:
Removing intermediate container 3f8060cdc6f5
Step 8 : RUN gem install rails
---> Running in 8c1793414e63
ERROR: Error installing rails:
activesupport requires Ruby version >= 2.2.2.
The command '/bin/sh -c gem install rails' returned a non-zero code: 1
Es sieht aus wie der Befehl source /usr/local/rvm/scripts/rvm
nicht während des Build arbeiten.
Ich bin mir nicht sicher, warum genau das passiert.
Der Befehl funktioniert, aber wenn der Befehl beendet ist, wird die Shell beendet und alles ist wieder verschwunden. – tkausl
sollten Sie vielleicht rvm nicht verwenden, um Schienen zu installieren, aber wenn Sie möchten, sollten Sie alle 'RUN's verketten, da jeder von ihnen eine neue Schicht erstellt und wahrscheinlich Ihre Bash-Quelle nicht kennt – bjhaid
Haben Sie diese Antwort http gelesen: //stackoverflow.com/a/25685004/1981061? – Griffin