Techioz Blog

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 と比較すると問題ありません。