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を実行する
-