diff --git a/.travis.yml b/.travis.yml index 35b608fbb..cbcd13aec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,8 @@ language: bash services: docker env: + - VERSION=2.3 VARIANT= + - VERSION=2.3 VARIANT=slim - VERSION=2.2 VARIANT= - VERSION=2.2 VARIANT=slim - VERSION=2.1 VARIANT= diff --git a/2.3/Dockerfile b/2.3/Dockerfile new file mode 100644 index 000000000..4d848354e --- /dev/null +++ b/2.3/Dockerfile @@ -0,0 +1,43 @@ +FROM buildpack-deps:jessie + +ENV RUBY_MAJOR 2.3 +ENV RUBY_VERSION 2.3.0 +ENV RUBY_DOWNLOAD_SHA256 ba5ba60e5f1aa21b4ef8e9bf35b9ddb57286cb546aac4b5a28c71f459467e507 +ENV RUBYGEMS_VERSION 2.5.1 + +# skip installing gem documentation +RUN echo 'install: --no-document\nupdate: --no-document' >> "$HOME/.gemrc" + +# some of ruby's build scripts are written in ruby +# we purge this later to make sure our final image uses what we just built +RUN apt-get update \ + && apt-get install -y bison libgdbm-dev ruby \ + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /usr/src/ruby \ + && curl -fSL -o ruby.tar.gz "http://cache.ruby-lang.org/pub/ruby/$RUBY_MAJOR/ruby-$RUBY_VERSION.tar.gz" \ + && echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.gz" | sha256sum -c - \ + && tar -xzf ruby.tar.gz -C /usr/src/ruby --strip-components=1 \ + && rm ruby.tar.gz \ + && cd /usr/src/ruby \ + && autoconf \ + && ./configure --disable-install-doc \ + && make -j"$(nproc)" \ + && make install \ + && apt-get purge -y --auto-remove bison libgdbm-dev ruby \ + && gem update --system $RUBYGEMS_VERSION \ + && rm -r /usr/src/ruby + +# install things globally, for great justice +ENV GEM_HOME /usr/local/bundle +ENV PATH $GEM_HOME/bin:$PATH + +ENV BUNDLER_VERSION 1.11.2 + +RUN gem install bundler --version "$BUNDLER_VERSION" \ + && bundle config --global path "$GEM_HOME" \ + && bundle config --global bin "$GEM_HOME/bin" + +# don't create ".bundle" in all our apps +ENV BUNDLE_APP_CONFIG $GEM_HOME + +CMD [ "irb" ] diff --git a/2.3/onbuild/Dockerfile b/2.3/onbuild/Dockerfile new file mode 100644 index 000000000..7accb9c59 --- /dev/null +++ b/2.3/onbuild/Dockerfile @@ -0,0 +1,13 @@ +FROM ruby:2.3 + +# throw errors if Gemfile has been modified since Gemfile.lock +RUN bundle config --global frozen 1 + +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +ONBUILD COPY Gemfile /usr/src/app/ +ONBUILD COPY Gemfile.lock /usr/src/app/ +ONBUILD RUN bundle install + +ONBUILD COPY . /usr/src/app diff --git a/2.3/slim/Dockerfile b/2.3/slim/Dockerfile new file mode 100644 index 000000000..4abb8ced3 --- /dev/null +++ b/2.3/slim/Dockerfile @@ -0,0 +1,71 @@ +FROM debian:jessie + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + bzip2 \ + ca-certificates \ + curl \ + libffi-dev \ + libgdbm3 \ + libssl-dev \ + libyaml-dev \ + procps \ + zlib1g-dev \ + && rm -rf /var/lib/apt/lists/* + +ENV RUBY_MAJOR 2.3 +ENV RUBY_VERSION 2.3.0 +ENV RUBY_DOWNLOAD_SHA256 ba5ba60e5f1aa21b4ef8e9bf35b9ddb57286cb546aac4b5a28c71f459467e507 +ENV RUBYGEMS_VERSION 2.5.1 + +# skip installing gem documentation +RUN echo 'install: --no-document\nupdate: --no-document' >> "$HOME/.gemrc" + +# some of ruby's build scripts are written in ruby +# we purge this later to make sure our final image uses what we just built +RUN buildDeps=' \ + autoconf \ + bison \ + gcc \ + libbz2-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libncurses-dev \ + libreadline-dev \ + libxml2-dev \ + libxslt-dev \ + make \ + ruby \ + ' \ + && set -x \ + && apt-get update \ + && apt-get install -y --no-install-recommends $buildDeps \ + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /usr/src/ruby \ + && curl -fSL -o ruby.tar.gz "http://cache.ruby-lang.org/pub/ruby/$RUBY_MAJOR/ruby-$RUBY_VERSION.tar.gz" \ + && echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.gz" | sha256sum -c - \ + && tar -xzf ruby.tar.gz -C /usr/src/ruby --strip-components=1 \ + && rm ruby.tar.gz \ + && cd /usr/src/ruby \ + && autoconf \ + && ./configure --disable-install-doc \ + && make -j"$(nproc)" \ + && make install \ + && gem update --system $RUBYGEMS_VERSION \ + && rm -r /usr/src/ruby \ + && apt-get purge -y --auto-remove $buildDeps + +# install things globally, for great justice +ENV GEM_HOME /usr/local/bundle +ENV PATH $GEM_HOME/bin:$PATH + +ENV BUNDLER_VERSION 1.11.2 + +RUN gem install bundler --version "$BUNDLER_VERSION" \ + && bundle config --global path "$GEM_HOME" \ + && bundle config --global bin "$GEM_HOME/bin" + +# don't create ".bundle" in all our apps +ENV BUNDLE_APP_CONFIG $GEM_HOME + +CMD [ "irb" ]