docker-composeのスタック名で結構苦労した話

そんなにちゃんと調べた記事じゃないです…

docker-compose upすると適当なstackが作られ、stack名はデフォルトでdocker-compose.ymlがあるディレクトリの名前になる。僕は複数のリポジトリでdocker-compose.ymlをdockerディレクトリの下に入れているから、複数のstackの名前が docker になって被る。そうするとstack内のコンテナとかボリュームの名前も docker-app とか docker-db とかになり、他のstackとぶつかりまくる。特にボリュームの名前の衝突は最悪で、特にハッシュ化とかしてないので同じボリューム名だとホストマシンの同じ場所にマウントされてDBのスキーマ違いますと怒られたりする。

stack名をちゃんと指定するにはdocker-composeの-pオプションを使うのだが、そもそもdocker-composeというのはupとdownしか覚えられない人間が使うもので、アプリケーションによって適切なオプションをつけて運用するのは不可能だ。結局僕はコンテナやボリュームの名前にアプリケーション名のプレフィックスをつけることで問題を回避したのだが、docker-compose.ymlのトップレベルにnameを入れておけば解決するらしい?(未検証)docker-compose.ymlの仕様(というかdocker系のドキュメント)、ググってもどれが信用できる情報かわからなくていつも適当にしちゃう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です