どうも、たかふみです。
dockerを使って環境構築をしようとdocker-compose up
したところ、下記メッセージが出てきました。
MacBook-Pro:env moriyama$ docker-compose up --build
WARNING: Found orphan containers (app_go, env_web_1, env_db_1, env_mysql_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Building bot_wordwolf
Step 1/11 : FROM alpine
今回はこの「Found orphan containers」について調べてみました。
「orphans」とは何か調べてみる。
↓のstackoverflowに全部書いてありました。
docker compose orphan containers warning
https://stackoverflow.com/questions/50947938/docker-compose-orphan-containers-warning
どうやら、docker-compose.ymlでコンテナを生成する際につけられるコンテナ名はディレクトリ名を使ってつけられるようです。僕の場合、env\docker-compose.yml
のディレクトリ構造で環境構築することが多いため、「env_web/ env_db/env_mysql」というコンテナが量産されてしまい、他のプロジェクトで生成したコンテナ名と競合して今回のWARNINGが表示されていたようです。
参考にしたstackoverflowで解決策として記載されていたのが、プロジェクト名をつけるというもの。
オプション 「-p」を使うことでつけられるとのことです。
docker-compose [-f <arg>...] [options] [--] [COMMAND] [ARGS...]
これでupしてみましょう。
MacBook-Pro:env moriyama$ docker-compose -p wordwolf up -d
Creating network "wordwolf_default" with the default driver
Building bot_wordwolf
Step 1/11 : FROM alpine
WARNINGが出ずに作成が始まっている!
そのほかにも「COMPOSE_PROJECT_NAME」という環境変数で指定をする方法や、docker-comose.ymlファイルと同ディレクトリに.envファイルを配置して「COMPOSE_PROJECT_NAME=myproject」を指定する方法もあるようです。
まとめ:-pでプロジェクト名をつける方法もある
今回は参考にしたサイトで書かれていた方法を試しましたが、WARNINGメッセージに表示されている--remove-orphans
をつけて実行すれば今回のWARNINGは表示されずコンテナが起動できるので、特に理由がなければメッセージの通り、--remove-orphans
をつけての実行で良さそうです。
■docker docsより
--remove-orphans
→Remove containers for services not defined in the Compose file.
引用:https://docs.docker.com/compose/reference/up/
僕は開発環境を作るときは、{プロジェクト名をつけたディレクトリ}\env\docker-compose.ymlの構成が多いので、プロジェクト名をつけたいときは-p
でdocker-compose up
すると良さそうです。
それでは!
※12/27追記
「-p」をつけてupしたら、docker-compose ps
でdocker-compose.yml内に記載したコンテナが表示されない。docker ps
だと表示されなくなりました。-p
つけると同一ネットワークのコンテナとして認識されないのでしょうか? こちらについては調査中です。
###参考:
・docker compose orphan containers warning
https://stackoverflow.com/questions/50947938/docker-compose-orphan-containers-warning
・docker-compose up
https://docs.docker.com/compose/reference/up/