Dockerコンテナを起動しようとしたところ、docker-compose up -d
でコンテナが起動しない、ということがありました。分かってみれば簡単なことだったのですが、少し詰まったので記事にしておきます。
内容
> docker-compose build --no-cache # 何も起きない
> docker-compose up # Attaching to と表示されたっきり反応無し
Attaching to
原因・解決策
コンテナ起動方法が違いました。
コンテナの設定に「profiles」を使用しているため、それに合わせてコマンドを実行する必要がありました。
> docker-compose --profile web up -d
Starting mockApi ... done
Starting app ... done
Starting nginx ... done
開発に用いていた「docker-compose.yml」は他の方が作成したものだったので、「profiles」設定がされていることを把握できていませんでした。また、コンテナの起動もDocker DesktopのGUI上から行っており、コマンドでのコンテナ起動方法を把握できていなかったのも原因です。
profilesとは?
dockerではコンテナの属性情報を「profiles(プロファイル)」として設定することができます。
例えば、フロントエンドの開発に関わるコンテナはfrontend
、バックエンドの開発に関わるコンテナはbackend
のように設定することができます。profilesを設定しなければ常に起動するので、他コンテナにも関わるコンテナであれば設定しない方が良いです。
参考
Compose でのプロファイル利用
https://matsuand.github.io/docs.docker.jp.onthefly/compose/profiles
上記の中で今回引っかかったのが以下の2点でした。
- docker-compose up する際に有効にするprofilesを指定する
- プロファイルが有効になっていない場合はコンテナが起動できない
→depends_on
で他コンテナに依存している場合は、そちらのコンテナで指定されているprofilesも有効にする必要がある。
まとめ 起動しない時はdocker-compose.yml, Dockerfileを確認する
コンテナが起動しない時はymlファイルやDockerfileを確認しましょう。(自戒)
dockerは長いこと使っていますがprofilesは知らなかったので、今度使ってみようと思います。
それでは!