Docker のイメージ生成時には次の様な少ない行数のログが同じ行を書き換えて流れていきます。
[+] Building 2.7s (2/3) => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 32B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/python:3.10.7-alpine3.16
これはパッと見た時にどこのなんの処理を行っているか把握するのには便利です。しかしながらエラーログなどのログ全体を追いたい場合には不便です。このログを表示する方法を紹介します。
イメージ生成時には次の様に--progress=plain
とオプションをつけることでログがローテ-トせず、常にコンソールに表示される様になります。
docker build --progress=plain -t 1.0.0 .
docker-compose build
でも同様に次の様にできます。
docker-compose build --progress=plain app
こうすると次の様にログ全体が画面に出力されます。
> docker-compose build --progress=plain mailhog Building mailhog #1 [internal] load build definition from Dockerfile #1 sha256:4c599f340c5662f232a5422d8166b1883a52da9d0f7ea1cb44ab54fbbec5166c #1 transferring dockerfile: 32B done #1 DONE 0.1s #2 [internal] load .dockerignore #2 sha256:624208440f1f27ee36c6de5cab7b8212857198b12c2a020efeab7424dac97655 #2 transferring context: 2B done #2 DONE 0.0s #3 [internal] load metadata for docker.io/library/python:3.10.7-alpine3.16 #3 sha256:91ab3f077ac28dd4f38a7ff51d15d751c4ec432695edd0f8539ff574e96b5ac0 #3 DONE 3.6s
その場で初見のイメージをビルドしたり、イメージを作ったりする時にはこの--progress=plain
オプションをつけておくと便利です。問題が発生した際、それがどこで何が原因で起きたか追いやすくなります。