docker runのタイミングでdockerfileのコマンドがエラーになってしまうことで処理が止まる問題を一時的に回避する
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
docker runのタイミングでDockerfileのコマンドがエラーになってしまうことで処理が止まる問題を一時的に回避するための対応をメモしました。
エラーが発生した経緯
apt-get
でmysql-clinet
をインストールしたかったのだが
その場合apt-get update
を実施する必要があり
一部のパッケージのリクエスト先が404となってエラーになってしまうため
このエラーを回避したかったことがきっかけになります。
Dockerfile
DockerfileFROM java:8-jre
RUN apt-get update -y;
RUN apt-get install mysql-client -y
発生したエラー
docker build
実行時にエラーになります。
実行ログ
docker build
コマンドを実行したログになります。
bash$ docker build -t hoge .
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM java:8-jre
---> e44d62cf8862
Step 2/3 : RUN apt-get update -y;
---> Running in 23a23621a47c
Get:1 http://security.debian.org jessie/updates InRelease [44.9 kB]
Ign http://deb.debian.org jessie InRelease
Get:2 http://deb.debian.org jessie-updates InRelease [16.3 kB]
Ign http://deb.debian.org jessie-backports InRelease
Get:3 http://deb.debian.org jessie Release.gpg [1652 B]
Ign http://deb.debian.org jessie-backports Release.gpg
Get:4 http://deb.debian.org jessie Release [77.3 kB]
Ign http://deb.debian.org jessie-backports Release
Err http://deb.debian.org jessie-backports/main amd64 Packages
Get:5 http://security.debian.org jessie/updates/main amd64 Packages [992 kB]
Get:6 http://deb.debian.org jessie-updates/main amd64 Packages [20 B]
Get:7 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
Err http://deb.debian.org jessie-backports/main amd64 Packages
Err http://deb.debian.org jessie-backports/main amd64 Packages
404 Not Found
Fetched 10.2 MB in 8s (1213 kB/s)
W: There is no public key available for the following key IDs:
AA8E81B4331F7F50
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-backports/main/binary-amd64/Packages 404 Not Found
E: Some index files failed to download. They have been ignored, or old ones used instead.
エラーについて
jessie-backports/main amd64 Packages
を取得しに行った際に
deb.debian.org
が404となっているためステータスコードがエラーになり
処理が停止しています。
解決手順
暫定ですが一時的にステータスコード 0を返して処理の停止を回避しています。
Dockerfile
DockerfileFROM java:8-jre
RUN apt-get update -y; exit 0;
RUN apt-get install mysql-client -y
実行ログ
修正したDockerfileで再度docker build
コマンドを実行したログになります。
bash$ docker build -t hoge .
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM java:8-jre
---> e44d62cf8862
Step 2/3 : RUN apt-get update -y; exit 0;
---> Running in ae8c71111846
Get:1 http://security.debian.org jessie/updates InRelease [44.9 kB]
Ign http://deb.debian.org jessie InRelease
Get:2 http://deb.debian.org jessie-updates InRelease [16.3 kB]
Ign http://deb.debian.org jessie-backports InRelease
Get:3 http://deb.debian.org jessie Release.gpg [1652 B]
Ign http://deb.debian.org jessie-backports Release.gpg
Get:4 http://deb.debian.org jessie Release [77.3 kB]
Ign http://deb.debian.org jessie-backports Release
Err http://deb.debian.org jessie-backports/main amd64 Packages
Err http://deb.debian.org jessie-backports/main amd64 Packages
Err http://deb.debian.org jessie-backports/main amd64 Packages
Err http://deb.debian.org jessie-backports/main amd64 Packages
Err http://deb.debian.org jessie-backports/main amd64 Packages
404 Not Found
Get:5 http://security.debian.org jessie/updates/main amd64 Packages [992 kB]
Get:6 http://deb.debian.org jessie-updates/main amd64 Packages [20 B]
Get:7 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
W: There is no public key available for the following key IDs:
AA8E81B4331F7F50
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-backports/main/binary-amd64/Packages 404 Not Found
E: Some index files failed to download. They have been ignored, or old ones used instead.
Fetched 10.2 MB in 13s (732 kB/s)
Removing intermediate container ae8c71111846
---> 28ae927cbccd
Step 3/3 : RUN apt-get install mysql-client -y
---> Running in bc18b00d9c52
暫定ですがエラーは回避することができました。
恒久対応
根本的な解決はパッケージを正しく取得することで
DNSのあたり設定に問題があると思っているため引き続きこちらについては調査していきたいと思います。
記事Article
もっと見る- article
Dockerの利用していないゴミを掃除しディスクスペースを解放するいくつかのやり方を紹介
- article
Next.js のバンドルサイズを可視化する@next/bundle-analyzer の紹介
- article
VSCodeでTypescriptファイルのimport補完で相対パスではなくエイリアスするための設定
- article
UUIDより短いユニークなIDを生成できるnpmライブラリnanoidの使い方
- article
【解決方法】TypeScript発生したTS2564 エラーの対処
- article
express で IP を取得する際などに利用する req.connection 非推奨(deprecated)の対処