[Laradock] コンテナの apt-get の署名が期限切れの場合の対処方法

[Laradock] コンテナの apt-get の署名が期限切れの場合の対処方法

こんにちは。最近、ズボンを新調した k-so16 です。緊急事態宣言が解除され、ズボンのウエストが合っていないという悩みからやっと解放されました(笑)

既存のプロジェクトの動作を確認するために、実行環境を Laradock で整えることにしました。既存のリポジトリに Laradock を Git のサブモジュールとして組込みコンテナーをビルドしたところ、エラーが発生しました。

エラーの内容としては、 apt-get が実行される際に参照している 署名の有効期限が切れている とのことで、ビルドが途中で止まってしまうので頭を悩ませていました。いろいろ試行錯誤したり解決方法を調べたりし、なんとか解決方法を見つけることができました。

本記事では、 Laradock をビルドする際に発生する apt-get の署名の期限切れエラーに対処する方法を紹介します。

本記事で想定する読者層は以下の通りです。

  • Docker についての基礎的な操作方法を知っている
  • Laradock に関する基礎的な知識を有している

筆者の動作環境

筆者の動作環境と Docker および Laradock のバージョンは以下の通りです。

  • Windows 10 Pro 1909
  • Docker Engine: 19.03.8
  • docker-compose: 1.25.5
  • Laradock: v10.0

Laradock のビルド中に発生したエラー

Laradock を GitHub のリポジトリ から clone して起動しようとしたところ、ビルドエラーが発生しました。どうやら workspace のビルドで実行される apt-get で参照される署名が期限切れ のものがいくつかあり、コマンドの実行が失敗して止まっているようでした。

解決方法

Docker で 不要になったイメージを削除 した後、再度ビルドし直すことで解決しました。

不要になったイメージを削除したあとにコンテナを再度立ち上げ
docker image prune
docker-compose up -d workspace 

過去に Laradock を利用した際に pull してきたイメージが残ったまま になっており、別プロジェクトとして新たに clone した Laradock でビルドしようとした際に 古いイメージが再利用され 、署名が切れたままになっていることが原因と思われます。

試したこと

解決に至るまでに、自身でも以下のような試行錯誤していました。

  • Docker を再起動
  • Windows を再起動
  • Dockerfiledocker-compose.yml の実行コマンドの変更
    • wget などで署名を取得し、 apt-key でキーを更新

Windows で Docker がうまく動かない場合、 とりあえず再起動 するとトラブルが解消することがそこそこあるのですが、今回のケースでは、残念ながら再起動では解決しませんでした。

署名の期限切れがエラーの原因だったので、 署名を取得してキーを更新させるコマンドを apt-get の実行前に注入 したら解決するかなと思いましたが、うまくキーの更新が渡されなかったようで失敗に終わりました。この方法で解決したとしても、 Dockerfiledocker-compose.yml といった Laradock の設定ファイルに差分が生じてしまうので、他の手段も模索していたかもしれません(笑)

まとめ

本記事のまとめは以下の通りです。

  • ビルドエラーが発生したら不要になった Docker イメージの削除を実行
    • イメージを pull し直すことで解決につながる可能性がある

以上、 k-so16 でした。今回のトラブルで、少し Docker の経験値が上がったような気がします(笑)

k-so16