趣味で作っているアプリはマイクロサービスを意識して作成しており、機能ごとにDocker Composeでインフラを設定して開発しています。
Docker Composeを2つ立ち上げたとき、最初に立ち上げたDocker Compose内のコンテナが上書きされる事象が発生したので、その対策になります。
結論:複数のDocker Composeを立ち上げるときはフォルダ名をかぶらないようにする
実験します。
以下のようなフォルダ構成で2つのDocker Composeを準備しました。
Docker Composeの中身は以下の通りです。
services:
db:
image: mysql:latest
container_name: db1
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: password
restart: always
services:
db:
image: mysql:latest
container_name: db2
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: password
restart: always
起動したときのコンソールは以下の通り
まずはEnv1配下のDocker Compose を起動します
続いてEnv2配下のDocker Composeを起動します
このときに起動しているコンテナをDocker Desctopのダッシュボードから確認します
Env2環境のDBしか起動していないことがわかりました
フォルダ名を変更して再度起動してみる
dbというフォルダ名が被っていたため、db1、db2に名前を変更しました。
それぞれの起動ログは以下になります
Docker Desktopのダッシュボードで確認します
無事に2つのDocker Composeが立ち上がりました。
ということで、Docker Composeを複数立ち上げるときは、docker-composeファイルが実行されているフォルダ名がかぶらないように注意が必要です。
てっきりコンテナ名だけかぶらないようにしておけばいいと思っていたので、変なところでハマりました。
created by Rinker
¥2,992
(2024/10/27 13:47:19時点 楽天市場調べ-詳細)
created by Rinker
¥3,981
(2024/10/27 13:47:19時点 楽天市場調べ-詳細)