From 49168590766ac3eb0ad286154b2e01760b79f4b2 Mon Sep 17 00:00:00 2001 From: ojab Date: Sun, 15 Aug 2021 07:24:21 +0000 Subject: [PATCH] Add `bullseye` & `bullseye-slim` versions, drop `stretch` & `stretch-slim` --- 2.6/{stretch => bullseye}/Dockerfile | 2 +- .../Dockerfile | 3 +- 2.6/slim-buster/Dockerfile | 3 +- 2.7/bullseye/Dockerfile | 95 ++++++++++++++ 2.7/slim-bullseye/Dockerfile | 122 ++++++++++++++++++ 2.7/slim-buster/Dockerfile | 3 +- 3.0/bullseye/Dockerfile | 95 ++++++++++++++ 3.0/slim-bullseye/Dockerfile | 122 ++++++++++++++++++ 3.0/slim-buster/Dockerfile | 3 +- Dockerfile.template | 5 +- versions.json | 8 +- versions.sh | 6 +- 12 files changed, 449 insertions(+), 18 deletions(-) rename 2.6/{stretch => bullseye}/Dockerfile (98%) rename 2.6/{slim-stretch => slim-bullseye}/Dockerfile (98%) create mode 100644 2.7/bullseye/Dockerfile create mode 100644 2.7/slim-bullseye/Dockerfile create mode 100644 3.0/bullseye/Dockerfile create mode 100644 3.0/slim-bullseye/Dockerfile diff --git a/2.6/stretch/Dockerfile b/2.6/bullseye/Dockerfile similarity index 98% rename from 2.6/stretch/Dockerfile rename to 2.6/bullseye/Dockerfile index 73f9cfd91..387c39d5b 100644 --- a/2.6/stretch/Dockerfile +++ b/2.6/bullseye/Dockerfile @@ -4,7 +4,7 @@ # PLEASE DO NOT EDIT IT DIRECTLY. # -FROM buildpack-deps:stretch +FROM buildpack-deps:bullseye # skip installing gem documentation RUN set -eux; \ diff --git a/2.6/slim-stretch/Dockerfile b/2.6/slim-bullseye/Dockerfile similarity index 98% rename from 2.6/slim-stretch/Dockerfile rename to 2.6/slim-bullseye/Dockerfile index 88d1609db..b2aa2cca9 100644 --- a/2.6/slim-stretch/Dockerfile +++ b/2.6/slim-bullseye/Dockerfile @@ -4,7 +4,7 @@ # PLEASE DO NOT EDIT IT DIRECTLY. # -FROM debian:stretch-slim +FROM debian:bullseye-slim RUN set -eux; \ apt-get update; \ @@ -48,6 +48,7 @@ RUN set -eux; \ g++ \ gcc \ libbz2-dev \ + libgdbm-compat-dev \ libglib2.0-dev \ libncurses-dev \ libreadline-dev \ diff --git a/2.6/slim-buster/Dockerfile b/2.6/slim-buster/Dockerfile index 0c3b1a98f..1e50d8fd7 100644 --- a/2.6/slim-buster/Dockerfile +++ b/2.6/slim-buster/Dockerfile @@ -48,6 +48,7 @@ RUN set -eux; \ g++ \ gcc \ libbz2-dev \ + libgdbm-compat-dev \ libglib2.0-dev \ libncurses-dev \ libreadline-dev \ @@ -56,8 +57,6 @@ RUN set -eux; \ make \ wget \ xz-utils \ -# https://packages.debian.org/sid/libgdbm-compat-dev (needed for "dbm" core module, but only in Buster+) - libgdbm-compat-dev \ ; \ rm -rf /var/lib/apt/lists/*; \ \ diff --git a/2.7/bullseye/Dockerfile b/2.7/bullseye/Dockerfile new file mode 100644 index 000000000..6ebfaa002 --- /dev/null +++ b/2.7/bullseye/Dockerfile @@ -0,0 +1,95 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM buildpack-deps:bullseye + +# skip installing gem documentation +RUN set -eux; \ + mkdir -p /usr/local/etc; \ + { \ + echo 'install: --no-document'; \ + echo 'update: --no-document'; \ + } >> /usr/local/etc/gemrc + +ENV LANG C.UTF-8 +ENV RUBY_MAJOR 2.7 +ENV RUBY_VERSION 2.7.4 +ENV RUBY_DOWNLOAD_SHA256 2a80824e0ad6100826b69b9890bf55cfc4cf2b61a1e1330fccbcb30c46cef8d7 + +# 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 -eux; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + bison \ + dpkg-dev \ + libgdbm-dev \ + ruby \ + ; \ + 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 --check --strict; \ + \ + 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-mark auto '.*' > /dev/null; \ + apt-mark manual $savedAptMark > /dev/null; \ + find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \ + | awk '/=>/ { print $(NF-1) }' \ + | sort -u \ + | grep -vE '^/usr/local/lib/' \ + | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -r apt-mark manual \ + ; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + \ + cd /; \ + rm -r /usr/src/ruby; \ +# verify we have no "ruby" packages installed + if dpkg -l | grep -i ruby; then exit 1; fi; \ + [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ +# rough smoke test + ruby --version; \ + gem --version; \ + bundle --version + +# don't create ".bundle" in all our apps +ENV GEM_HOME /usr/local/bundle +ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ + BUNDLE_APP_CONFIG="$GEM_HOME" +ENV PATH $GEM_HOME/bin:$PATH +# adjust permissions of a few directories for running "gem install" as an arbitrary user +RUN mkdir -p "$GEM_HOME" && chmod 777 "$GEM_HOME" + +CMD [ "irb" ] diff --git a/2.7/slim-bullseye/Dockerfile b/2.7/slim-bullseye/Dockerfile new file mode 100644 index 000000000..05e01bad4 --- /dev/null +++ b/2.7/slim-bullseye/Dockerfile @@ -0,0 +1,122 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM debian:bullseye-slim + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + bzip2 \ + ca-certificates \ + libffi-dev \ + libgmp-dev \ + libssl-dev \ + libyaml-dev \ + procps \ + zlib1g-dev \ + ; \ + rm -rf /var/lib/apt/lists/* + +# skip installing gem documentation +RUN set -eux; \ + mkdir -p /usr/local/etc; \ + { \ + echo 'install: --no-document'; \ + echo 'update: --no-document'; \ + } >> /usr/local/etc/gemrc + +ENV LANG C.UTF-8 +ENV RUBY_MAJOR 2.7 +ENV RUBY_VERSION 2.7.4 +ENV RUBY_DOWNLOAD_SHA256 2a80824e0ad6100826b69b9890bf55cfc4cf2b61a1e1330fccbcb30c46cef8d7 + +# 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 -eux; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + bison \ + dpkg-dev \ + libgdbm-dev \ + ruby \ + autoconf \ + g++ \ + gcc \ + libbz2-dev \ + libgdbm-compat-dev \ + libglib2.0-dev \ + libncurses-dev \ + libreadline-dev \ + libxml2-dev \ + libxslt-dev \ + make \ + wget \ + xz-utils \ + ; \ + 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 --check --strict; \ + \ + 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-mark auto '.*' > /dev/null; \ + apt-mark manual $savedAptMark > /dev/null; \ + find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \ + | awk '/=>/ { print $(NF-1) }' \ + | sort -u \ + | grep -vE '^/usr/local/lib/' \ + | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -r apt-mark manual \ + ; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + \ + cd /; \ + rm -r /usr/src/ruby; \ +# verify we have no "ruby" packages installed + if dpkg -l | grep -i ruby; then exit 1; fi; \ + [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ +# rough smoke test + ruby --version; \ + gem --version; \ + bundle --version + +# don't create ".bundle" in all our apps +ENV GEM_HOME /usr/local/bundle +ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ + BUNDLE_APP_CONFIG="$GEM_HOME" +ENV PATH $GEM_HOME/bin:$PATH +# adjust permissions of a few directories for running "gem install" as an arbitrary user +RUN mkdir -p "$GEM_HOME" && chmod 777 "$GEM_HOME" + +CMD [ "irb" ] diff --git a/2.7/slim-buster/Dockerfile b/2.7/slim-buster/Dockerfile index e63c04726..3b1825a1c 100644 --- a/2.7/slim-buster/Dockerfile +++ b/2.7/slim-buster/Dockerfile @@ -48,6 +48,7 @@ RUN set -eux; \ g++ \ gcc \ libbz2-dev \ + libgdbm-compat-dev \ libglib2.0-dev \ libncurses-dev \ libreadline-dev \ @@ -56,8 +57,6 @@ RUN set -eux; \ make \ wget \ xz-utils \ -# https://packages.debian.org/sid/libgdbm-compat-dev (needed for "dbm" core module, but only in Buster+) - libgdbm-compat-dev \ ; \ rm -rf /var/lib/apt/lists/*; \ \ diff --git a/3.0/bullseye/Dockerfile b/3.0/bullseye/Dockerfile new file mode 100644 index 000000000..6cf1732b4 --- /dev/null +++ b/3.0/bullseye/Dockerfile @@ -0,0 +1,95 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM buildpack-deps:bullseye + +# skip installing gem documentation +RUN set -eux; \ + mkdir -p /usr/local/etc; \ + { \ + echo 'install: --no-document'; \ + echo 'update: --no-document'; \ + } >> /usr/local/etc/gemrc + +ENV LANG C.UTF-8 +ENV RUBY_MAJOR 3.0 +ENV RUBY_VERSION 3.0.2 +ENV RUBY_DOWNLOAD_SHA256 570e7773100f625599575f363831166d91d49a1ab97d3ab6495af44774155c40 + +# 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 -eux; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + bison \ + dpkg-dev \ + libgdbm-dev \ + ruby \ + ; \ + 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 --check --strict; \ + \ + 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-mark auto '.*' > /dev/null; \ + apt-mark manual $savedAptMark > /dev/null; \ + find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \ + | awk '/=>/ { print $(NF-1) }' \ + | sort -u \ + | grep -vE '^/usr/local/lib/' \ + | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -r apt-mark manual \ + ; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + \ + cd /; \ + rm -r /usr/src/ruby; \ +# verify we have no "ruby" packages installed + if dpkg -l | grep -i ruby; then exit 1; fi; \ + [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ +# rough smoke test + ruby --version; \ + gem --version; \ + bundle --version + +# don't create ".bundle" in all our apps +ENV GEM_HOME /usr/local/bundle +ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ + BUNDLE_APP_CONFIG="$GEM_HOME" +ENV PATH $GEM_HOME/bin:$PATH +# adjust permissions of a few directories for running "gem install" as an arbitrary user +RUN mkdir -p "$GEM_HOME" && chmod 777 "$GEM_HOME" + +CMD [ "irb" ] diff --git a/3.0/slim-bullseye/Dockerfile b/3.0/slim-bullseye/Dockerfile new file mode 100644 index 000000000..a17b866a8 --- /dev/null +++ b/3.0/slim-bullseye/Dockerfile @@ -0,0 +1,122 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM debian:bullseye-slim + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + bzip2 \ + ca-certificates \ + libffi-dev \ + libgmp-dev \ + libssl-dev \ + libyaml-dev \ + procps \ + zlib1g-dev \ + ; \ + rm -rf /var/lib/apt/lists/* + +# skip installing gem documentation +RUN set -eux; \ + mkdir -p /usr/local/etc; \ + { \ + echo 'install: --no-document'; \ + echo 'update: --no-document'; \ + } >> /usr/local/etc/gemrc + +ENV LANG C.UTF-8 +ENV RUBY_MAJOR 3.0 +ENV RUBY_VERSION 3.0.2 +ENV RUBY_DOWNLOAD_SHA256 570e7773100f625599575f363831166d91d49a1ab97d3ab6495af44774155c40 + +# 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 -eux; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + bison \ + dpkg-dev \ + libgdbm-dev \ + ruby \ + autoconf \ + g++ \ + gcc \ + libbz2-dev \ + libgdbm-compat-dev \ + libglib2.0-dev \ + libncurses-dev \ + libreadline-dev \ + libxml2-dev \ + libxslt-dev \ + make \ + wget \ + xz-utils \ + ; \ + 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 --check --strict; \ + \ + 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-mark auto '.*' > /dev/null; \ + apt-mark manual $savedAptMark > /dev/null; \ + find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \ + | awk '/=>/ { print $(NF-1) }' \ + | sort -u \ + | grep -vE '^/usr/local/lib/' \ + | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -r apt-mark manual \ + ; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + \ + cd /; \ + rm -r /usr/src/ruby; \ +# verify we have no "ruby" packages installed + if dpkg -l | grep -i ruby; then exit 1; fi; \ + [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ +# rough smoke test + ruby --version; \ + gem --version; \ + bundle --version + +# don't create ".bundle" in all our apps +ENV GEM_HOME /usr/local/bundle +ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ + BUNDLE_APP_CONFIG="$GEM_HOME" +ENV PATH $GEM_HOME/bin:$PATH +# adjust permissions of a few directories for running "gem install" as an arbitrary user +RUN mkdir -p "$GEM_HOME" && chmod 777 "$GEM_HOME" + +CMD [ "irb" ] diff --git a/3.0/slim-buster/Dockerfile b/3.0/slim-buster/Dockerfile index 88b4e0242..feef07b49 100644 --- a/3.0/slim-buster/Dockerfile +++ b/3.0/slim-buster/Dockerfile @@ -48,6 +48,7 @@ RUN set -eux; \ g++ \ gcc \ libbz2-dev \ + libgdbm-compat-dev \ libglib2.0-dev \ libncurses-dev \ libreadline-dev \ @@ -56,8 +57,6 @@ RUN set -eux; \ make \ wget \ xz-utils \ -# https://packages.debian.org/sid/libgdbm-compat-dev (needed for "dbm" core module, but only in Buster+) - libgdbm-compat-dev \ ; \ rm -rf /var/lib/apt/lists/*; \ \ diff --git a/Dockerfile.template b/Dockerfile.template index dfc9a3247..6798d0248 100644 --- a/Dockerfile.template +++ b/Dockerfile.template @@ -103,6 +103,7 @@ RUN set -eux; \ g++ \ gcc \ libbz2-dev \ + libgdbm-compat-dev \ libglib2.0-dev \ libncurses-dev \ libreadline-dev \ @@ -111,10 +112,6 @@ RUN set -eux; \ make \ wget \ xz-utils \ -{{ if env.variant | endswith("stretch") then "" else ( -}} -# https://packages.debian.org/sid/libgdbm-compat-dev (needed for "dbm" core module, but only in Buster+) - libgdbm-compat-dev \ -{{ ) end -}} {{ ) else "" end -}} ; \ rm -rf /var/lib/apt/lists/*; \ diff --git a/versions.json b/versions.json index 729a7acb4..c428c8c02 100644 --- a/versions.json +++ b/versions.json @@ -2,10 +2,10 @@ "2.6": { "sha256": "8262e4663169c85787fdc9bfbd04d9eb86eb2a4b56d7f98373a8fcaa18e593eb", "variants": [ + "bullseye", + "slim-bullseye", "buster", "slim-buster", - "stretch", - "slim-stretch", "alpine3.14", "alpine3.13" ], @@ -14,6 +14,8 @@ "2.7": { "sha256": "2a80824e0ad6100826b69b9890bf55cfc4cf2b61a1e1330fccbcb30c46cef8d7", "variants": [ + "bullseye", + "slim-bullseye", "buster", "slim-buster", "alpine3.14", @@ -24,6 +26,8 @@ "3.0": { "sha256": "570e7773100f625599575f363831166d91d49a1ab97d3ab6495af44774155c40", "variants": [ + "bullseye", + "slim-bullseye", "buster", "slim-buster", "alpine3.14", diff --git a/versions.sh b/versions.sh index 92290eb34..51d1803e2 100755 --- a/versions.sh +++ b/versions.sh @@ -68,10 +68,8 @@ for version in "${versions[@]}"; do sha256: env.shaVal, variants: [ ( - "buster", - if env.rcVersion == "2.6" then - "stretch" - else empty end + "bullseye", + "buster" | ., "slim-" + .), # https://github.com/docker-library/ruby/pull/142#issuecomment-320012893 ( "3.14",