2016-07-27 28 views
1

Ich versuche, unsere Rails-App zu einer Docker-Bereitstellung zu verschieben, aber ich bekomme es nicht, Bundle von einer Github-Referenz zu installieren.Bündelung von Github in einer Dockerfile

Mit dem unten Dockerfile:

FROM ruby:2.3.0-slim 

MAINTAINER Chris Jewell <[email protected]> 

# Install dependencies: 
# - build-essential: To ensure certain gems can be compiled 
# - nodejs: Compile assets 
# - libpq-dev: Communicate with postgres through the postgres gem 
# - postgresql-client-9.4: In case you want to talk directly to postgres 
RUN apt-get update && apt-get install -qq -y build-essential nodejs libpq-dev postgresql-client-9.4 --fix-missing --no-install-recommends 

# Set an environment variable to store where the app is installed to inside 
# of the Docker image. 
ENV INSTALL_PATH /ventbackend 
RUN mkdir -p $INSTALL_PATH 

# This sets the context of where commands will be ran in and is documented 
# on Docker's website extensively. 
WORKDIR $INSTALL_PATH 

# Ensure gems are cached and only get updated when they change. This will 
# drastically increase build times when your gems do not change. 
COPY Gemfile Gemfile 
RUN bundle install 

# Copy in the application code from your work station at the current directory 
# over to the working directory. 
COPY . . 

# Provide dummy data to Rails so it can pre-compile assets. 
RUN bundle exec rake RAILS_ENV=production DATABASE_URL=postgresql://user:[email protected]/dbname SECRET_TOKEN=pickasecuretoken assets:precompile 

# Expose a volume so that nginx will be able to read in assets in production. 
VOLUME ["$INSTALL_PATH/public"] 

# The default command that gets ran will be to start the Unicorn server. 
CMD bundle exec unicorn -c config/unicorn.rb 

bekomme ich folgende Fehlermeldung beim Versuch docker-compose up auszuführen:

You need to install git to be able to use gems from git repositories. For help installing git, please refer to GitHub's tutorial at https://help.github.com/articles/set-up-git

Ich gehe davon aus, dass dies wegen der Zeilen in der Gemfile ist wie :

gem 'logstasher', github: 'MarkMurphy/logstasher', ref: 'be3e871385bde7b1897ec2a1831f868a843d8000' 

Howeve Wir verwenden auch einige private Edelsteine.

Ist die Installation von Git auf dem Container der Weg zu gehen? Wie wird sich das mit Github authentifizieren?

+0

Die Fehlermeldung scheint sehr direkt in den Schritten zu sein, die Sie ergreifen müssen. Gibt es einen Grund, die Installation von Git zu vermeiden? Die meisten Github-Repos, auf die in einem Installationsprogramm wie diesem verwiesen wird, sind öffentlich, es ist keine Anmeldung erforderlich. – BMitch

Antwort

2

Ist die Installation von Git auf dem Container der Weg zu gehen?

In diesem Fall, ja: Sie können ein Beispiel bei "Using Docker to maintain a Ruby gem" sehen. Es Dockerfile tut ein gehören:

# ~~~~ OS Maintenance ~~~~ 
RUN apt-get update && apt-get install -y git 

Wie wird sich dies mit Github authentifizieren?

Es muss nicht auf GitHub, um lesen authentifizieren, dh Klon.
Sie mussten einen Edelstein zurück (um es zu veröffentlichen), dann Sie müssten zum Beispiel Ihre SSH-Schlüssel (über ein Volume montiert).
Aber das ist hier nicht erforderlich.

+0

In diesem speziellen Fall war das Hinzufügen von 'git-core' zu ​​den Paketen, die wir 'apt-get install' bekommen, in Ordnung, jedoch haben wir in einigen Projekten private Repos, die wir ebenfalls bündeln müssen. Wo und wie verwenden wir an dieser Stelle SSH-Schlüssel? – Knightstick

+0

@Knightstick im Allgemeinen verwende ich einen Token-Pass auf den Build-Schritt nur durch --build-args – VonC