👏
【Docker】前は成功していたはずのbuildでエラー
おこったこと
以下のようなDockerfileを作成してruby 3.2の環境を構築(2023年春頃)
FROM ruby:3.2.2
ENV LANG C.UTF-8
ENV APP_ROOT /app
ENV BUNDLE_JOBS 4
ENV BUNDLER_VERSION 2.2.25
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends sudo && \
apt-get install -y build-essential libpq-dev default-mysql-client && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN mkdir $APP_ROOT
WORKDIR $APP_ROOT
半年くらいしてから、他の人にこの環境を渡してdocker-compose buildしてもらったところ、以下のようなエラーが出るとの報告がありました。
E: Problem executing scripts APT::Update::Post-Invoke 'rm -f /var/cache/apt/archives/.deb /var/cache/apt/archives/partial/.deb /var/cache/apt/*.bin || true'
RUN apt-get update
を実行した際に出ているようでした。
原因と対処
Dockerfileを作成した当初は、Dockerイメージを ruby:3.2.2
とだけ指定した場合、3.2.2-bullseye
がインストールされていました。しかし半年後(現在)ではDebianのバージョンが上がり、3.2.2-bookworm
が指定されるようになっています。
このバージョンの差異がエラーの原因でした。
そのためDockerfileでイメージを3.2.2-bullseye
と明示的に指定することでビルドできるようになりました。
Discussion