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
命令に関しては、以下の記事で解説している。
📄よく利用するDockerfileの命令まとめ(これだけ覚えておけばOK)
まとめ
- コンテナ立ち上げから失敗している場合
-
--entrypoint
オプションを使ってbashを実行する
-
- コンテナ立ち上がってから失敗している場合
-
docker compose exec
コマンドでbashを実行する
-