« Back to Index

Use Docker to setup a Ruby application to use a private gem server. The reason I’m documenting this is because Ruby’s Bundler gem is notoriously problematic using SSL

View original Gist on GitHub

docker-ruby-bundler-ssh.bash

FROM ruby:2.1.2
MAINTAINER Foo Bar <foo.bar@gmail.com>

# Create directory for code
RUN mkdir /app

# Set current working directory
WORKDIR /app

# Add Gemfile
ADD src/Gemfile /app/Gemfile

# Change Gemfile to use a private gem server and remove :git path refs
RUN sed -i -e 's/:git.*//' /app/Gemfile
RUN sed -i 's/rubygems\.org/my-private-gem-server.foobar\.com/' /app/Gemfile
RUN sed -i -e 's/",$/"/g' /app/Gemfile

# Add ca cert
ADD dev.pem /home/root/dev.pem
ADD ca.pem /home/root/ca.pem

# Environment variables for Bundler SSL support
ENV BUNDLE_SSL_CLIENT_CERT=/home/root/dev.pem
ENV BUNDLE_SSL_CA_CERT=/home/root/ca.pem
ENV HOME=/home/root

# Create .gemrc SSL file
RUN echo ":ssl_client_cert: /home/root/dev.pem" > /home/root/.gemrc
RUN echo ":ssl_ca_cert: /home/root/ca.pem" >> /home/root/.gemrc

# Create gem credentials file
RUN mkdir -p /home/root/.gem
RUN echo "---" > /home/root/.gem/credentials
RUN echo ":rubygems_api_key: value_ignored" >> /home/root/.gem/credentials
RUN chmod 600 /home/root/.gem/credentials

# Install gems
RUN bundle install --jobs 4