皆さん、Docker使ってますか?僕は新天地でバリバリDocker使うことになりそうなので慌てて復習していたりします。
さて、そんな中Docker Composeで見事にハマってしまった罠があったので、Project Nameにハイフンは使わないようにしましょうという話をします.
どういうこと?
Docker Composeは作成されるcontainer imageの名称が以下のように決められています。
{プロジェクト名}_{サービス名}_{連番}
- プロジェクト名 (Prefix):デフォルトでは docker-compose.yml を置いているフォルダ名が使用される。
- サービス名:docker-compose.yml に書いた任意の名前が使用される。
- 連番 (Suffix):スケールする際に連番で付与される。
(https://qiita.com/ymm1x/items/56961f8e2ffb48b8dbe3 より引用)
で、プロジェクト名ってよく hoge-system
みたいにハイフンを間に噛ませるじゃないですか?
その状態でnetworksとか設定してしまうと、ホストからコンテナのIPアドレスを取得する時によく使う docker inspect --format "{{.NetworkSettings.Networks.hoge-system_networks.IPAddress}}" hoge-system_service_1
とかがパースエラーになって実行出来ないのでよくないという。
どうすればいいの?
単純に .env
とかで COMPOSE_PROJECT_NAME=hoge_system
にしとくとか、docker-compose実行時に -p
オプション指定してプロジェクト名をアンダーバーのものにしとくと良いです。