Add ruby 3.0.2
[dockerfiles.git] / ruby-2.3.8 / Dockerfile
blob162612d773749fa29bfbd9d29536734c4bfa4616
1 # DESCRIPTION:   Ruby 2.3.8 container
2 # AUTHOR:        https://github.com/r1williams
3 # COMMENTS:
4 #    Build Ruby 2.3.8 based on Ubuntu 20.04
6 # USAGE:
7 #    # Download Dockerfile
8 #    wget https://raw.githubusercontent.com/ricardson/dockerfiles/master/ruby-2.3.8/Dockerfile
10 #    # Build ruby image
11 #    docker build -t ruby-2.3.8-ubuntu:20.04 .
13 #    # Run the image
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
21 #   
22 FROM ubuntu:20.04
24 # skip installing gem documentation
25 RUN mkdir -p /usr/local/etc \
26         && { \
27                 echo 'install: --no-document'; \
28                 echo 'update: --no-document'; \
29         } >> /usr/local/etc/gemrc
31 ENV RUBY_MAJOR 2.3
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
39 RUN set -ex \
40         \
41         && buildDeps=" \
42                 bison \
43                 dpkg-dev \
44                 libgdbm-dev \
45                 # Old ruby isn't compatible with OpenSSL 1.1
46                 apt-utils \
47                 wget \
48                 autoconf \
49                 gcc \
50                 ruby \
51                 zlib1g \
52                 zlib1g-dev \
53                 libssl1.0-dev \
54         " \
55         && apt-get update \
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/* \
60         \
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 - \
63         \
64         && mkdir -p /usr/src/ruby \
65         && tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1 \
66         && rm ruby.tar.xz \
67         \
68         && cd /usr/src/ruby \
69         \
70 # hack in "ENABLE_PATH_CHECK" disabling to suppress:
71 #   warning: Insecure world writable dir
72         && { \
73                 echo '#define ENABLE_PATH_CHECK 0'; \
74                 echo; \
75                 cat file.c; \
76         } > file.c.new \
77         && mv file.c.new file.c \
78         \
79         && autoconf \
80         && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \
81         && ./configure \
82                 --build="$gnuArch" \
83                 --disable-install-doc \
84                 --enable-shared \
85         && make -j "$(nproc)" \
86         && make install \
87         && cd / \
88         && rm -r /usr/src/ruby \
89         \
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"
107 FROM ubuntu:20.04
109 ENV GEM_HOME /usr/local/bundle
110 ENV RUBY_MAJOR=2.3 \
111     RUBY_VERSION=2.3.8 \
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
120 RUN \
121     echo "deb http://security.ubuntu.com/ubuntu bionic-security main" >> /etc/apt/sources.list \
122         && apt-get update \
123         && apt-get install -y \
124         libssl1.0-dev \
125         ca-certificates \
126         libyaml-0.2 \
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/
135 CMD ["irb"]