From e27efd0540c9dde50b24b0bce0ff8297ca2d5495 Mon Sep 17 00:00:00 2001 From: Prem Sichanugrist Date: Mon, 5 Jan 2026 10:23:01 +0900 Subject: [PATCH] Build docker image for Ruby 4.0.0 --- .github/workflows/build-rails-base.yml | 3 ++ .github/workflows/build-rails-buildpack.yml | 3 ++ rails-base/4.x/Dockerfile | 34 +++++++++++++++ rails-buildpack/4.x/Dockerfile | 46 +++++++++++++++++++++ 4 files changed, 86 insertions(+) create mode 100644 rails-base/4.x/Dockerfile create mode 100644 rails-buildpack/4.x/Dockerfile diff --git a/.github/workflows/build-rails-base.yml b/.github/workflows/build-rails-base.yml index f12955a..490fbbe 100644 --- a/.github/workflows/build-rails-base.yml +++ b/.github/workflows/build-rails-base.yml @@ -22,6 +22,9 @@ jobs: - ruby: '3.4.8' folder: '3.x' # slim bookworm for linux/amd64 tag: '3.4.8-slim-bookworm@sha256:9eb304d8ca9d3eeb32a5a5a39b080b295489735510fa832ababb7ffcc079bb57' + - ruby: '4.0.0' + folder: '4.x' # slim bookworm for linux/amd64 + tag: '4.0.0-slim-bookworm@sha256:51dc3fabd6b34f3a12b54bdbe4f85e5b1800300c4c29483aecefc7eaa5430ed0' container: image: docker:git env: diff --git a/.github/workflows/build-rails-buildpack.yml b/.github/workflows/build-rails-buildpack.yml index de99bab..bbc86c8 100644 --- a/.github/workflows/build-rails-buildpack.yml +++ b/.github/workflows/build-rails-buildpack.yml @@ -22,6 +22,9 @@ jobs: - ruby: '3.4.8' folder: '3.x' # bookworm for linux/amd64 tag: '3.4.8-bookworm@sha256:687432dc8f4094557514f9bd3cd314457d5d86008e70793b7a5d4d9beefa417f' + - ruby: '4.0.0' + folder: '4.x' # bookworm for linux/amd64 + tag: '4.0.0-bookworm@sha256:106aa117e7762e813e627f67f7a30c1fff0cc39f292a1907c3c5131f9133f483' container: image: docker:git env: diff --git a/rails-base/4.x/Dockerfile b/rails-base/4.x/Dockerfile new file mode 100644 index 0000000..8f9a220 --- /dev/null +++ b/rails-base/4.x/Dockerfile @@ -0,0 +1,34 @@ +ARG RUBY_TAG=latest +FROM public.ecr.aws/docker/library/ruby:${RUBY_TAG} + +ENV APP_HOME=/app +ENV PATH=$APP_HOME/bin:$PATH + +RUN useradd --user-group --create-home app +RUN mkdir -p $APP_HOME && chown -R app:app $APP_HOME +WORKDIR $APP_HOME + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + curl \ + file \ + git \ + fonts-ipafont-gothic \ + fonts-unfonts-core \ + imagemagick \ + librsvg2-bin \ + wkhtmltopdf \ + xvfb \ + xauth \ + default-libmysqlclient-dev \ + libxslt1.1 \ + libxml2 \ + && curl -sL https://deb.nodesource.com/setup_lts.x | bash - \ + && apt-get update \ + && apt-get install -y --no-install-recommends nodejs \ + && rm -rf /var/lib/apt/lists/* + +# Setup wkhtmltopdf +RUN echo '#!/bin/bash\nxvfb-run -a --server-args="-screen 0, 1024x768x24" /usr/bin/wkhtmltopdf --enable-local-file-access -q $*' > /usr/bin/wkhtmltopdf.sh && \ + chmod a+x /usr/bin/wkhtmltopdf.sh && \ + ln -s /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf diff --git a/rails-buildpack/4.x/Dockerfile b/rails-buildpack/4.x/Dockerfile new file mode 100644 index 0000000..9d59fc2 --- /dev/null +++ b/rails-buildpack/4.x/Dockerfile @@ -0,0 +1,46 @@ +ARG RUBY_TAG=latest +FROM public.ecr.aws/docker/library/ruby:${RUBY_TAG} + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + file \ + git \ + unzip \ + curl \ + autoconf \ + automake \ + default-libmysqlclient-dev \ + default-mysql-client \ + g++ \ + gcc \ + gnupg \ + patch \ + make \ + libbz2-dev \ + libc6-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libreadline-dev \ + libtool \ + libxslt-dev \ + libpq-dev \ + libsqlite3-dev \ + libxml2-dev \ + qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \ + libqt5webkit5-dev \ + gstreamer1.0-plugins-base \ + gstreamer1.0-tools \ + gstreamer1.0-x \ + imagemagick \ + && apt-get upgrade -y \ + && rm -rf /var/lib/apt/lists/* + +# Install Node JS +RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash - \ + && apt-get install -y nodejs \ + && rm -rf /var/lib/apt/lists/* +RUN npm install -g yarn + +ENV LANG C.UTF-8 +ENV LC_ALL C.UTF-8