Ruby Slim-Bullseye および libvips-dev に基づく Ror による巨大な Docker イメージ サイズ
概要
私はruby:3.1.3-slim-bulseyeを使用してRails 7アプリケーションをDocker化しています。
明確な理由はありませんが、イメージのサイズは約 2GB です。
私はvipsを使用するアクティブストレージを使用しています(そのためlibvips-devを使用します)。
Docker履歴を使用してイメージレイヤーを検査しようとしましたが、 出力には、これらの docker コマンドに関連する 2 つの巨大なレイヤーが示されています。
RUN bash -c "set -o pipefail && apt-get install -y --no-install-recommends build-essential curl git libpq-dev "
RUN bash -c "set -o pipefail && apt-get install -y libvips-dev"
docker 履歴の出力 my_image –no-trunc,
..... other entries
sha256:bf2ec68f81ba5fea38089b6a09d60786f296776b76f8083c9e3c94eae64533f5 24 minutes ago |3 GID=1000 NODE_ENV=production UID=1000 /bin/sh -c bash -c "set -o pipefail && apt-get install -y libvips-dev" 667MB
sha256:1f778f131d692203d3918ea0fbc8e91c2466fadc7bd42ac8d333b8cf34cdae2b 25 minutes ago |3 GID=1000 NODE_ENV=production UID=1000 /bin/sh -c bash -c "set -o pipefail && apt-get install -y --no-install-recommends build-essential curl git libpq-dev " 258MB
...... other entries
私のDockerfile
FROM ruby:3.1.3-slim-bullseye
WORKDIR /app
.... Other docker entries
#
RUN bash -c "set -o pipefail && apt-get update "
RUN bash -c "set -o pipefail && apt-get install -y --no-install-recommends build-essential curl git libpq-dev "
RUN bash -c "set -o pipefail && apt-get install -y libvips-dev"
RUN bash -c "set -o pipefail && groupadd -g \"${GID}\" ruby && useradd --create-home --no-log-init -u \"${UID}\" -g \"${GID}\" ruby"
RUN bash -c "set -o pipefail \
&& chown ruby:ruby -R /node_modules /app \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man "
.... Other docker entries
apt-get install の何が問題で、libvips-dev が 667MB を消費し、build-essentialcurl git libpq-dev が 258MB を消費するようになります。
解決策
Ruby-vips でイシューをオープンしました (https://github.com/libvips/ruby-vips/issues/370#issuecomment-1716933820)。
推奨事項は次のとおりです。
1 - libvips-dev をインストールする代わりに、プレーンな libvips を使用できます。 (最初に libvips-dev を使用した正確な理由はわかりません)
2 - –no-install-recommends をコマンドに追加します
したがって、コマンドは apt-get install -y –no-install-recommends libvips です。
現在のイメージ レイヤーのサイズは 130MG ですが、667MB と比較すると問題ありません。