エンジニアを目指す初学者に向けて、わかりやすく解説したブログです。
サイトをリニューアルしました

【Docker Compose】コンテナ内部のデバッグする

Docker Composeの環境を構築していると、エラーに遭遇してデバッグを行わなければいけない場合がある。

そんなときに、どのような手段があるか紹介する。

プロセスを立ち上げることまでできた場合

execコマンドを使うと、コンテナの内部に新しくプロセスを立ち上げることができる。
このコマンドを使って /bin/bashのプロセスを立ち上げることで、デバッグを可能にする。

■フォーマット

docker compose exec <サービス名> <実行したいコマンド>

■例

frontendというサービスのコンテナに対して、 /bin/bashのプロセスを立ち上げる場合。

$ docker compose exec frontend /bin/bash

エラーが発生してコンテナが終了してしまった場合

bashを使ってプロセスを立ち上げ、コンテナ内部でコマンドの検証をする。

■フォーマット

docker compose run --entrypoint /bin/bash <サービス名>

※サービス名を指定する場所に注意

■例

backendというサービスのコンテナに対して、起動と同時に /bin/bashのプロセスを立ち上げる

$ docker compose run --entrypoint /bin/bash backend

--entrypointという引数

この引数は、Dockerfileの ENTRYPOINT命令を上書きするオプション。

この命令は簡単に言うと、コンテナで動くデーモンをスタートするものである。

ENTRYPOINT命令に関しては、以下の記事で解説している。

📄Arrow icon of a page linkよく利用するDockerfileの命令まとめ(これだけ覚えておけばOK)

まとめ

  • コンテナ立ち上げから失敗している場合
    • --entrypointオプションを使ってbashを実行する
  • コンテナ立ち上がってから失敗している場合
    • docker compose execコマンドでbashを実行する

関連記事