生涯未熟

生涯未熟

プログラミングをちょこちょこと。

Docker ComposeのProject Nameにハイフンを使わない方が良いという話

皆さん、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 オプション指定してプロジェクト名をアンダーバーのものにしとくと良いです。