1 # DESCRIPTION: Ruby 2.3.8 container
2 # AUTHOR: https://github.com/r1williams
4 # Build Ruby 2.3.8 based on Ubuntu 20.04
7 # # Download Dockerfile
8 # wget https://raw.githubusercontent.com/ricardson/dockerfiles/master/ruby-2.3.8/Dockerfile
11 # docker build -t ruby-2.3.8-ubuntu:20.04 .
14 # docker run -it ruby-2.3.8-ubuntu:20.04
16 # # Use without build image
17 # docker pull docker.pkg.github.com/r1williams/dockerfiles/ruby-2.3.8-ubuntu:20.04
19 # # Use as base image in DockerFile:
20 # FROM docker.pkg.github.com/r1williams/dockerfiles/ruby-2.3.8-ubuntu:20.04
24 # skip installing gem documentation
25 RUN mkdir -p /usr/local/etc \
27 echo 'install: --no-document'; \
28 echo 'update: --no-document'; \
29 } >> /usr/local/etc/gemrc
32 ENV RUBY_VERSION 2.3.8
33 ENV RUBY_DOWNLOAD_SHA256 910f635d84fd0d81ac9bdee0731279e6026cb4cd1315bbbb5dfb22e09c5c1dfe
34 ENV RUBYGEMS_VERSION 3.1.4
35 ENV BUNDLER_VERSION 2.1.4
37 # some of ruby's build scripts are written in ruby
38 # we purge system ruby later to make sure our final image uses what we just built
45 # Old ruby isn't compatible with OpenSSL 1.1
56 && apt-get install -y software-properties-common \
57 && apt-add-repository 'deb http://security.ubuntu.com/ubuntu bionic-security main' \
58 && apt-get install -y --no-install-recommends $buildDeps \
59 && rm -rf /var/lib/apt/lists/* \
61 && wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz" \
62 && echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum -c - \
64 && mkdir -p /usr/src/ruby \
65 && tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1 \
70 # hack in "ENABLE_PATH_CHECK" disabling to suppress:
71 # warning: Insecure world writable dir
73 echo '#define ENABLE_PATH_CHECK 0'; \
77 && mv file.c.new file.c \
80 && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \
83 --disable-install-doc \
85 && make -j "$(nproc)" \
88 && rm -r /usr/src/ruby \
90 && gem update --system "$RUBYGEMS_VERSION"
92 ENV BUNDLER_VERSION 2.1.4
94 RUN gem install bundler --default --force --version "$BUNDLER_VERSION"
96 # install things globally, for great justice
97 # and don't create ".bundle" in all our apps
98 ENV GEM_HOME /usr/local/bundle
99 ENV BUNDLE_PATH="$GEM_HOME" \
100 BUNDLE_BIN="$GEM_HOME/bin" \
101 BUNDLE_SILENCE_ROOT_WARNING=1 \
102 BUNDLE_APP_CONFIG="$GEM_HOME"
103 ENV PATH $BUNDLE_BIN:$PATH
104 RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
105 && chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
109 ENV GEM_HOME /usr/local/bundle
112 RUBYGEMS_VERSION=3.1.4 \
113 BUNDLER_VERSION=2.1.4 \
114 BUNDLE_PATH="$GEM_HOME" \
115 BUNDLE_BIN="$GEM_HOME/bin" \
116 BUNDLE_SILENCE_ROOT_WARNING=1 \
117 BUNDLE_APP_CONFIG="$GEM_HOME"
118 ENV PATH=$BUNDLE_BIN:$PATH
121 echo "deb http://security.ubuntu.com/ubuntu bionic-security main" >> /etc/apt/sources.list \
123 && apt-get install -y \
127 && mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
128 && chmod 777 "$GEM_HOME" "$BUNDLE_BIN" \
129 && rm -rf /usr/share/doc/* \
130 && rm -rf /usr/share/info/* \
131 && rm -rf /var/cache/apt/archives/*
133 COPY --from=0 /usr/local/ /usr/local/