2017-10-18 16 views
0

Nouveau pour rubis et bundler ici. Je les installe dans une image docker avec ce fichier docker:Comment installer ruby ​​et bundler avec dockerfile?

FROM alpine:3.5 

# Install Ruby, Ruby Bundler and other ruby dependencies 

RUN apk add --update \ 
     ruby ruby-bigdecimal ruby-bundler \ 
     ca-certificates libressl \ 
     libressl-dev build-base ruby-dev \ 
     ruby-rdoc ruby-io-console ruby-irb; \ 
\ 
    && bundle config build.nokogiri --use-system-libraries; \ 
    && bundle config git.allow_insecure true; \ 
\ 
    && gem install json foreman --no-rdoc --no-ri; \ 
    && gem cleanup; \ 
    && rm -rf /usr/lib/ruby/gems/*/cache/*; \ 
    && apk del libressl-dev build-base ruby-dev; \ 
    && rm -rf /var/cache/apk/* /tmp; 

CMD ["bundle"] 

Quand je lance une exécution d'docker je reçois:

Don't run Bundler as root. Bundler can ask for sudo if it is needed, 
and installing your bundle as root will break this application for all 
non-root users on this machine. 
Could not locate Gemfile or .bundle/ directory 

Comment puis-je résoudre ce problème? Je veux juste installer ruby ​​et ruby-bundle et être fait avec cela ...

+0

y a-t-il des utilisateurs non root de la machine? –

+0

c'est un conteneur docker donc je ne pense pas. – Becks

+0

Je ne le fais pas non plus. pourquoi ne pas simplement ignorer l'avertissement? –

Répondre

2

Il ya pré construit ruby images (Alpine 3.6 Ruby 2.4) qui incluent bundler. Il est plus facile de commencer avec eux car ils utilisent généralement les «meilleures pratiques» actuelles pour construire.

Notez qu'ils définissent la variable d'environnement BUNDLE_SILENCE_ROOT_WARNING avec la directive ENV dans la génération d'image pour supprimer cet avertissement root.

Normalement, vous ne courriez pas bundler comme CMD pour un conteneur soit, vous pouvez exécuter bundler lors d'une étape de construction d'image RUN bien.

L'exécution de conteneurs en tant qu'utilisateurs non root n'est pas une mauvaise idée dans tous les cas. Utilisez la directive USER pour changer cela.

FROM ruby:2.4-stretch 
WORKDIR /app 
ADD . /app/ 
RUN set -uex; \ 
    bundle install; \ 
    adduser -D rubyapp; \ 
    mkdir -p /app/data; \ 
    chown rubyapp /app/data 
USER rubyapp 
CMD [ "ruby", "whatever.rb" ] 
+0

J'ai décidé de construire ce conteneur à partir d'une image ubuntu. En fait maintenant je ne traite que de "Impossible de localiser Gemfile" – Becks

+0

L'image ['2.4-stretch'] (https://github.com/docker-library/ruby/blob/9390129c08cc19668fc482edfd7d7c5a890a80eb/2.4/stretch/Dockerfile) sera assez proche d'Ubuntu. Le 'Gemfile' et votre application doivent être' COPY'd ou 'ADD'ed à l'image avant d'exécuter' bundle' – Matt