2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerfileをbuild時にログを出して楽にデバッグしよう!

Last updated at Posted at 2022-11-30

背景

  • docker buildする際にログが高速で流れてしまうため、どこでエラーが起きているか詳しく知りたい

Docker imageをbuildするとき

Pythonのimageを例に出します

FROM python:3.10

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

WORKDIR /code

COPY . /code/
RUN pip install --upgrade pip && pip install poetry
RUN poetry install

imageのbuild時のログを見る際は

docker-compose build --progress=plain 

を実行すると下記のようにログが流れずに表示されます

docker-compose build --progress=plain
#1 [<image名>-nginx internal] load build definition from Dockerfile.dev
#1 transferring dockerfile: 35B 0.0s done
#1 DONE 0.0s

#2 [<image名>-app internal] load build definition from Dockerfile
#2 transferring dockerfile: 270B done
#2 DONE 0.0s

#3 [<image名>-db internal] load build definition from Dockerfile
#3 transferring dockerfile: 304B done
#3 DONE 0.0s

#4 [<image名>-nginx internal] load .dockerignore
#4 transferring context: 2B 0.0s done

ビルドコンテキストがわからなくなる時

例えば指定したディレクトリが間違っていたせいでrequirements.txtやpoetry.tomlがないよ!というエラーが出た際に上記の

docker-compose build --progress=plain 

とLinuxのlsコマンドと組み合わせて使うとデバッグが容易になります

FROM python:3.10

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

WORKDIR /code

COPY . /code/
# lsコマンドを実行。また、-laを入れるとファイルの権限まで見ることができる
RUN ls -la
RUN pip install --upgrade pip && pip install poetry
RUN poetry install

実際にbuildしてみよう!

docker-compose build --progress=plain 

を実行すると下記のようにWORKDIR内のファイル構成を確認できます

#23 [<image名> 4/7] RUN ls -la
#23 0.541 total 168
#23 0.541 drwxr-xr-x  1 root root  4096 Nov 30 07:53 .
#23 0.541 drwxr-xr-x  1 root root  4096 Nov 30 07:53 ..
#23 0.541 drwxr-xr-x  2 root root  4096 Nov 30 07:53 .devcontainer
#23 0.541 -rw-r--r--  1 root root   307 Nov 30 05:24 .env
#23 0.541 -rw-r--r--  1 root root   315 Nov 14 04:30 .env.local
#23 0.541 drwxr-xr-x  8 root root  4096 Nov 30 07:53 .git
#23 0.541 drwxr-xr-x  4 root root  4096 Nov 30 07:53 .github
#23 0.541 -rw-r--r--  1 root root  3138 Nov 17 07:49 .gitignore
#23 0.541 drwxr-xr-x  3 root root  4096 Nov 30 07:53 .pytest_cache
#23 0.541 drwxr-xr-x  2 root root  4096 Nov 30 07:53 .vscode
#23 0.541 -rw-r--r--  1 root root  6458 Nov 29 02:02 README.md
#23 0.541 drwxr-xr-x  3 root root  4096 Nov 30 07:53 <プロジェクト名>
#23 0.541 drwxr-xr-x  5 root root  4096 Nov 30 07:53 containers
#23 0.541 drwxr-xr-x 10 root root  4096 Nov 30 07:53 <アプリケーション名>
#23 0.541 -rw-r--r--  1 root root  1085 Nov  8 02:53 docker-compose.prod.yml
#23 0.541 -rw-r--r--  1 root root  1339 Nov 16 00:59 docker-compose.yml
#23 0.541 -rw-r--r--  1 root root   282 Nov 17 08:07 entrypoint.bash
#23 0.541 -rwxr-xr-x  1 root root   683 Nov 13 23:06 manage.py
#23 0.541 -rw-r--r--  1 root root 76266 Nov 29 02:02 poetry.lock
#23 0.541 -rw-r--r--  1 root root   919 Nov 29 02:02 pyproject.toml
#23 0.541 -rw-r--r--  1 root root   173 Nov 29 02:02 pytest.ini
#23 0.541 -rw-r--r--  1 root root   387 Nov  8 03:00 set-up-env.test.sh
#23 0.541 drwxr-xr-x  5 root root  4096 Nov 30 07:53 static
#23 DONE 0.6s

まとめ

Dockerfileをbuildする際にログが早く流れすぎてデバッグしずらかったのですがこのコマンドを知ってからかなりやりやすくなりました

記事の紹介

以下の記事も書きましたのでよかったら見てみてください

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?