From 6959194971f4f84e9bef2976ae6b8a469fa58dae Mon Sep 17 00:00:00 2001 From: Fumiaki MATSUSHIMA Date: Sun, 22 Oct 2017 08:56:02 +0900 Subject: [PATCH] Add 2.5-rc builds --- .travis.yml | 3 + 2.2/alpine3.4/Dockerfile | 8 +-- 2.2/jessie/Dockerfile | 8 +-- 2.2/jessie/slim/Dockerfile | 8 +-- 2.3/alpine3.4/Dockerfile | 8 +-- 2.3/jessie/Dockerfile | 8 +-- 2.3/jessie/slim/Dockerfile | 8 +-- 2.4/alpine3.4/Dockerfile | 8 +-- 2.4/alpine3.6/Dockerfile | 8 +-- 2.4/jessie/Dockerfile | 8 +-- 2.4/jessie/slim/Dockerfile | 8 +-- 2.4/stretch/Dockerfile | 8 +-- 2.4/stretch/slim/Dockerfile | 8 +-- 2.5-rc/alpine3.6/Dockerfile | 110 +++++++++++++++++++++++++++++++++ 2.5-rc/stretch/Dockerfile | 75 ++++++++++++++++++++++ 2.5-rc/stretch/slim/Dockerfile | 101 ++++++++++++++++++++++++++++++ Dockerfile-alpine.template | 8 +-- Dockerfile-debian.template | 8 +-- Dockerfile-slim.template | 8 +-- 19 files changed, 334 insertions(+), 75 deletions(-) create mode 100644 2.5-rc/alpine3.6/Dockerfile create mode 100644 2.5-rc/stretch/Dockerfile create mode 100644 2.5-rc/stretch/slim/Dockerfile diff --git a/.travis.yml b/.travis.yml index 3c5f483e6..fbdf65fee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,9 @@ language: bash services: docker env: + - VERSION=2.5-rc VARIANT=stretch + - VERSION=2.5-rc VARIANT=stretch/slim + - VERSION=2.5-rc VARIANT=alpine3.6 - VERSION=2.4 VARIANT=stretch - VERSION=2.4 VARIANT=stretch/slim - VERSION=2.4 VARIANT=jessie diff --git a/2.2/alpine3.4/Dockerfile b/2.2/alpine3.4/Dockerfile index ccf820b4b..7d8e10ab8 100644 --- a/2.2/alpine3.4/Dockerfile +++ b/2.2/alpine3.4/Dockerfile @@ -11,6 +11,7 @@ ENV RUBY_MAJOR 2.2 ENV RUBY_VERSION 2.2.8 ENV RUBY_DOWNLOAD_SHA256 37eafc15037396c26870f6a6c5bcd0658d14b46cd5e191a3b56d89dd22d561b0 ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -92,11 +93,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.2/jessie/Dockerfile b/2.2/jessie/Dockerfile index f0f3bb389..e78f07c00 100644 --- a/2.2/jessie/Dockerfile +++ b/2.2/jessie/Dockerfile @@ -11,6 +11,7 @@ ENV RUBY_MAJOR 2.2 ENV RUBY_VERSION 2.2.8 ENV RUBY_DOWNLOAD_SHA256 37eafc15037396c26870f6a6c5bcd0658d14b46cd5e191a3b56d89dd22d561b0 ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -57,11 +58,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.2/jessie/slim/Dockerfile b/2.2/jessie/slim/Dockerfile index cb0893f18..508baea2f 100644 --- a/2.2/jessie/slim/Dockerfile +++ b/2.2/jessie/slim/Dockerfile @@ -23,6 +23,7 @@ ENV RUBY_MAJOR 2.2 ENV RUBY_VERSION 2.2.8 ENV RUBY_DOWNLOAD_SHA256 37eafc15037396c26870f6a6c5bcd0658d14b46cd5e191a3b56d89dd22d561b0 ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -83,11 +84,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.3/alpine3.4/Dockerfile b/2.3/alpine3.4/Dockerfile index 9b43e0a33..411929d31 100644 --- a/2.3/alpine3.4/Dockerfile +++ b/2.3/alpine3.4/Dockerfile @@ -11,6 +11,7 @@ ENV RUBY_MAJOR 2.3 ENV RUBY_VERSION 2.3.5 ENV RUBY_DOWNLOAD_SHA256 7d3a7dabb190c2da06c963063342ca9a214bcd26f2158e904f0ec059b065ffda ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -92,11 +93,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.3/jessie/Dockerfile b/2.3/jessie/Dockerfile index a775af9ff..5e94501d6 100644 --- a/2.3/jessie/Dockerfile +++ b/2.3/jessie/Dockerfile @@ -11,6 +11,7 @@ ENV RUBY_MAJOR 2.3 ENV RUBY_VERSION 2.3.5 ENV RUBY_DOWNLOAD_SHA256 7d3a7dabb190c2da06c963063342ca9a214bcd26f2158e904f0ec059b065ffda ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -57,11 +58,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.3/jessie/slim/Dockerfile b/2.3/jessie/slim/Dockerfile index a81314d53..7ab7901eb 100644 --- a/2.3/jessie/slim/Dockerfile +++ b/2.3/jessie/slim/Dockerfile @@ -23,6 +23,7 @@ ENV RUBY_MAJOR 2.3 ENV RUBY_VERSION 2.3.5 ENV RUBY_DOWNLOAD_SHA256 7d3a7dabb190c2da06c963063342ca9a214bcd26f2158e904f0ec059b065ffda ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -83,11 +84,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.4/alpine3.4/Dockerfile b/2.4/alpine3.4/Dockerfile index 09e411bee..2986fac1f 100644 --- a/2.4/alpine3.4/Dockerfile +++ b/2.4/alpine3.4/Dockerfile @@ -11,6 +11,7 @@ ENV RUBY_MAJOR 2.4 ENV RUBY_VERSION 2.4.2 ENV RUBY_DOWNLOAD_SHA256 748a8980d30141bd1a4124e11745bb105b436fb1890826e0d2b9ea31af27f735 ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -92,11 +93,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.4/alpine3.6/Dockerfile b/2.4/alpine3.6/Dockerfile index 28ac75504..5bc8af5a9 100644 --- a/2.4/alpine3.6/Dockerfile +++ b/2.4/alpine3.6/Dockerfile @@ -11,6 +11,7 @@ ENV RUBY_MAJOR 2.4 ENV RUBY_VERSION 2.4.2 ENV RUBY_DOWNLOAD_SHA256 748a8980d30141bd1a4124e11745bb105b436fb1890826e0d2b9ea31af27f735 ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -92,11 +93,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.4/jessie/Dockerfile b/2.4/jessie/Dockerfile index 57a841690..8d32eeb75 100644 --- a/2.4/jessie/Dockerfile +++ b/2.4/jessie/Dockerfile @@ -11,6 +11,7 @@ ENV RUBY_MAJOR 2.4 ENV RUBY_VERSION 2.4.2 ENV RUBY_DOWNLOAD_SHA256 748a8980d30141bd1a4124e11745bb105b436fb1890826e0d2b9ea31af27f735 ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -57,11 +58,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.4/jessie/slim/Dockerfile b/2.4/jessie/slim/Dockerfile index 98f5973df..549522eaa 100644 --- a/2.4/jessie/slim/Dockerfile +++ b/2.4/jessie/slim/Dockerfile @@ -23,6 +23,7 @@ ENV RUBY_MAJOR 2.4 ENV RUBY_VERSION 2.4.2 ENV RUBY_DOWNLOAD_SHA256 748a8980d30141bd1a4124e11745bb105b436fb1890826e0d2b9ea31af27f735 ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -83,11 +84,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.4/stretch/Dockerfile b/2.4/stretch/Dockerfile index 7e6344574..b8981fdf7 100644 --- a/2.4/stretch/Dockerfile +++ b/2.4/stretch/Dockerfile @@ -11,6 +11,7 @@ ENV RUBY_MAJOR 2.4 ENV RUBY_VERSION 2.4.2 ENV RUBY_DOWNLOAD_SHA256 748a8980d30141bd1a4124e11745bb105b436fb1890826e0d2b9ea31af27f735 ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -57,11 +58,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.4/stretch/slim/Dockerfile b/2.4/stretch/slim/Dockerfile index 22e9f6546..d9dd0e828 100644 --- a/2.4/stretch/slim/Dockerfile +++ b/2.4/stretch/slim/Dockerfile @@ -23,6 +23,7 @@ ENV RUBY_MAJOR 2.4 ENV RUBY_VERSION 2.4.2 ENV RUBY_DOWNLOAD_SHA256 748a8980d30141bd1a4124e11745bb105b436fb1890826e0d2b9ea31af27f735 ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -83,11 +84,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION 1.15.4 - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/2.5-rc/alpine3.6/Dockerfile b/2.5-rc/alpine3.6/Dockerfile new file mode 100644 index 000000000..75b577585 --- /dev/null +++ b/2.5-rc/alpine3.6/Dockerfile @@ -0,0 +1,110 @@ +FROM alpine:3.6 + +# skip installing gem documentation +RUN mkdir -p /usr/local/etc \ + && { \ + echo 'install: --no-document'; \ + echo 'update: --no-document'; \ + } >> /usr/local/etc/gemrc + +ENV RUBY_MAJOR 2.5-rc +ENV RUBY_VERSION 2.5.0-preview1 +ENV RUBY_DOWNLOAD_SHA256 c2f518eb04b38bdd562ba5611abd2521248a1608fc466368563dd794ddeddd09 +ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 + +# some of ruby's build scripts are written in ruby +# we purge system ruby later to make sure our final image uses what we just built +# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75 +RUN set -ex \ + \ + && apk add --no-cache --virtual .ruby-builddeps \ + autoconf \ + bison \ + bzip2 \ + bzip2-dev \ + ca-certificates \ + coreutils \ + dpkg-dev dpkg \ + gcc \ + gdbm-dev \ + glib-dev \ + libc-dev \ + libffi-dev \ + libressl \ + libressl-dev \ + libxml2-dev \ + libxslt-dev \ + linux-headers \ + make \ + ncurses-dev \ + procps \ + readline-dev \ + ruby \ + tar \ + xz \ + yaml-dev \ + zlib-dev \ + \ + && wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz" \ + && echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum -c - \ + \ + && mkdir -p /usr/src/ruby \ + && tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1 \ + && rm ruby.tar.xz \ + \ + && cd /usr/src/ruby \ + \ +# hack in "ENABLE_PATH_CHECK" disabling to suppress: +# warning: Insecure world writable dir + && { \ + echo '#define ENABLE_PATH_CHECK 0'; \ + echo; \ + cat file.c; \ + } > file.c.new \ + && mv file.c.new file.c \ + \ + && autoconf \ + && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ +# the configure script does not detect isnan/isinf as macros + && export ac_cv_func_isnan=yes ac_cv_func_isinf=yes \ + && ./configure \ + --build="$gnuArch" \ + --disable-install-doc \ + --enable-shared \ + && make -j "$(nproc)" \ + && make install \ + \ + && runDeps="$( \ + scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \ + | tr ',' '\n' \ + | sort -u \ + | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ + )" \ + && apk add --virtual .ruby-rundeps $runDeps \ + bzip2 \ + ca-certificates \ + libffi-dev \ + libressl-dev \ + procps \ + yaml-dev \ + zlib-dev \ + && apk del .ruby-builddeps \ + && cd / \ + && rm -r /usr/src/ruby \ + \ + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force + +# install things globally, for great justice +# and don't create ".bundle" in all our apps +ENV GEM_HOME /usr/local/bundle +ENV BUNDLE_PATH="$GEM_HOME" \ + BUNDLE_BIN="$GEM_HOME/bin" \ + BUNDLE_SILENCE_ROOT_WARNING=1 \ + BUNDLE_APP_CONFIG="$GEM_HOME" +ENV PATH $BUNDLE_BIN:$PATH +RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \ + && chmod 777 "$GEM_HOME" "$BUNDLE_BIN" + +CMD [ "irb" ] diff --git a/2.5-rc/stretch/Dockerfile b/2.5-rc/stretch/Dockerfile new file mode 100644 index 000000000..cbc166609 --- /dev/null +++ b/2.5-rc/stretch/Dockerfile @@ -0,0 +1,75 @@ +FROM buildpack-deps:stretch + +# skip installing gem documentation +RUN mkdir -p /usr/local/etc \ + && { \ + echo 'install: --no-document'; \ + echo 'update: --no-document'; \ + } >> /usr/local/etc/gemrc + +ENV RUBY_MAJOR 2.5-rc +ENV RUBY_VERSION 2.5.0-preview1 +ENV RUBY_DOWNLOAD_SHA256 c2f518eb04b38bdd562ba5611abd2521248a1608fc466368563dd794ddeddd09 +ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 + +# some of ruby's build scripts are written in ruby +# we purge system ruby later to make sure our final image uses what we just built +RUN set -ex \ + \ + && buildDeps=' \ + bison \ + dpkg-dev \ + libgdbm-dev \ + ruby \ + ' \ + && apt-get update \ + && apt-get install -y --no-install-recommends $buildDeps \ + && rm -rf /var/lib/apt/lists/* \ + \ + && wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz" \ + && echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum -c - \ + \ + && mkdir -p /usr/src/ruby \ + && tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1 \ + && rm ruby.tar.xz \ + \ + && cd /usr/src/ruby \ + \ +# hack in "ENABLE_PATH_CHECK" disabling to suppress: +# warning: Insecure world writable dir + && { \ + echo '#define ENABLE_PATH_CHECK 0'; \ + echo; \ + cat file.c; \ + } > file.c.new \ + && mv file.c.new file.c \ + \ + && autoconf \ + && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ + && ./configure \ + --build="$gnuArch" \ + --disable-install-doc \ + --enable-shared \ + && make -j "$(nproc)" \ + && make install \ + \ + && apt-get purge -y --auto-remove $buildDeps \ + && cd / \ + && rm -r /usr/src/ruby \ + \ + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force + +# install things globally, for great justice +# and don't create ".bundle" in all our apps +ENV GEM_HOME /usr/local/bundle +ENV BUNDLE_PATH="$GEM_HOME" \ + BUNDLE_BIN="$GEM_HOME/bin" \ + BUNDLE_SILENCE_ROOT_WARNING=1 \ + BUNDLE_APP_CONFIG="$GEM_HOME" +ENV PATH $BUNDLE_BIN:$PATH +RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \ + && chmod 777 "$GEM_HOME" "$BUNDLE_BIN" + +CMD [ "irb" ] diff --git a/2.5-rc/stretch/slim/Dockerfile b/2.5-rc/stretch/slim/Dockerfile new file mode 100644 index 000000000..87c160b85 --- /dev/null +++ b/2.5-rc/stretch/slim/Dockerfile @@ -0,0 +1,101 @@ +FROM debian:stretch + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + bzip2 \ + ca-certificates \ + libffi-dev \ + libgdbm3 \ + libssl-dev \ + libyaml-dev \ + procps \ + zlib1g-dev \ + && rm -rf /var/lib/apt/lists/* + +# skip installing gem documentation +RUN mkdir -p /usr/local/etc \ + && { \ + echo 'install: --no-document'; \ + echo 'update: --no-document'; \ + } >> /usr/local/etc/gemrc + +ENV RUBY_MAJOR 2.5-rc +ENV RUBY_VERSION 2.5.0-preview1 +ENV RUBY_DOWNLOAD_SHA256 c2f518eb04b38bdd562ba5611abd2521248a1608fc466368563dd794ddeddd09 +ENV RUBYGEMS_VERSION 2.6.14 +ENV BUNDLER_VERSION 1.15.4 + +# some of ruby's build scripts are written in ruby +# we purge system ruby later to make sure our final image uses what we just built +RUN set -ex \ + \ + && buildDeps=' \ + autoconf \ + bison \ + dpkg-dev \ + gcc \ + libbz2-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libncurses-dev \ + libreadline-dev \ + libxml2-dev \ + libxslt-dev \ + make \ + ruby \ + wget \ + xz-utils \ + ' \ + && apt-get update \ + && apt-get install -y --no-install-recommends $buildDeps \ + && rm -rf /var/lib/apt/lists/* \ + \ + && wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz" \ + && echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum -c - \ + \ + && mkdir -p /usr/src/ruby \ + && tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1 \ + && rm ruby.tar.xz \ + \ + && cd /usr/src/ruby \ + \ +# hack in "ENABLE_PATH_CHECK" disabling to suppress: +# warning: Insecure world writable dir + && { \ + echo '#define ENABLE_PATH_CHECK 0'; \ + echo; \ + cat file.c; \ + } > file.c.new \ + && mv file.c.new file.c \ + \ + && autoconf \ + && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ + && ./configure \ + --build="$gnuArch" \ + --disable-install-doc \ + --enable-shared \ + && make -j "$(nproc)" \ + && make install \ + \ + && dpkg-query --show --showformat '${package}\n' \ + | grep -P '^libreadline\d+$' \ + | xargs apt-mark manual \ + && apt-get purge -y --auto-remove $buildDeps \ + && cd / \ + && rm -r /usr/src/ruby \ + \ + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force + +# install things globally, for great justice +# and don't create ".bundle" in all our apps +ENV GEM_HOME /usr/local/bundle +ENV BUNDLE_PATH="$GEM_HOME" \ + BUNDLE_BIN="$GEM_HOME/bin" \ + BUNDLE_SILENCE_ROOT_WARNING=1 \ + BUNDLE_APP_CONFIG="$GEM_HOME" +ENV PATH $BUNDLE_BIN:$PATH +RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \ + && chmod 777 "$GEM_HOME" "$BUNDLE_BIN" + +CMD [ "irb" ] diff --git a/Dockerfile-alpine.template b/Dockerfile-alpine.template index 9eccd7b43..e6e6cdbb9 100644 --- a/Dockerfile-alpine.template +++ b/Dockerfile-alpine.template @@ -11,6 +11,7 @@ ENV RUBY_MAJOR %%VERSION%% ENV RUBY_VERSION %%FULL_VERSION%% ENV RUBY_DOWNLOAD_SHA256 %%SHA256%% ENV RUBYGEMS_VERSION %%RUBYGEMS%% +ENV BUNDLER_VERSION %%BUNDLER%% # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -92,11 +93,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION %%BUNDLER%% - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template index 977840296..d323817e1 100644 --- a/Dockerfile-debian.template +++ b/Dockerfile-debian.template @@ -11,6 +11,7 @@ ENV RUBY_MAJOR %%VERSION%% ENV RUBY_VERSION %%FULL_VERSION%% ENV RUBY_DOWNLOAD_SHA256 %%SHA256%% ENV RUBYGEMS_VERSION %%RUBYGEMS%% +ENV BUNDLER_VERSION %%BUNDLER%% # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -57,11 +58,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION %%BUNDLER%% - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps diff --git a/Dockerfile-slim.template b/Dockerfile-slim.template index 79b68cb41..9825ddd05 100644 --- a/Dockerfile-slim.template +++ b/Dockerfile-slim.template @@ -23,6 +23,7 @@ ENV RUBY_MAJOR %%VERSION%% ENV RUBY_VERSION %%FULL_VERSION%% ENV RUBY_DOWNLOAD_SHA256 %%SHA256%% ENV RUBYGEMS_VERSION %%RUBYGEMS%% +ENV BUNDLER_VERSION %%BUNDLER%% # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built @@ -83,11 +84,8 @@ RUN set -ex \ && cd / \ && rm -r /usr/src/ruby \ \ - && gem update --system "$RUBYGEMS_VERSION" - -ENV BUNDLER_VERSION %%BUNDLER%% - -RUN gem install bundler --version "$BUNDLER_VERSION" + && gem update --system "$RUBYGEMS_VERSION" \ + && gem install bundler --version "$BUNDLER_VERSION" --force # install things globally, for great justice # and don't create ".bundle" in all our apps