👏

【Docker】前は成功していたはずのbuildでエラー

2023/12/15に公開

おこったこと

以下のような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