Dockerで同じような環境を作成したい時の注意点
注意点を一部まとめ
投稿日: 2025-03-22
更新日: 2025-03-22
同じような環境を作成したい場合の注意点
注意点 1: 別のポート番号を使う
理由:
- ローカル環境では「同じポート番号は同時に使えない」から
- ポートで管理したくないのであれば、「仮想ドメイン」で分ける方法もある
注意点 2: データのボリューム名を変える
理由:
- ボリューム名の重複を防ぐため
- 複数のプロジェクトで同じボリューム名を使うと、上書きされたり、データが混在するリスクがある
- プロジェクトの独立性を保つため
- ボリューム名をプロジェクトごとにユニークにしておくことで、それぞれのプロジェクトが他に影響されずに動作する
- 削除やバックアップ・復元を簡単にするため
- 複数プロジェクトがある中で、あるプロジェクトだけのデータを操作したい時に、名前で判別しやすくすることが重要
- CI/CD や自動化で予期せぬ干渉を防ぐ
- 同じホスト上で複数のパイプラインが走っている場合、同名のボリュームを使ってしまうと、テスト結果や状態が壊れるリスクがある
注意点 3: サービス名や DB 名も分ける
理由
- 名前の衝突(コンフリクト)を防ぐため
- 同じサービス名や DB 名があると、内部ネットワーク名やホスト名が衝突する可能性がある
- プロジェクト A も B もサービス名を db にしていると、同時に起動した際にネットワーク名がかぶって通信がおかしくなることがある
- 同じサービス名や DB 名があると、内部ネットワーク名やホスト名が衝突する可能性がある
例
version: "3.8"
services:
wordpress2: # 別サービス名
image: wordpress:latest
ports:
- "8082:80" # 別ポート
environment:
WORDPRESS_DB_HOST: db2
WORDPRESS_DB_NAME: wordpress2
WORDPRESS_DB_USER: wordpress2
WORDPRESS_DB_PASSWORD: wordpress2
volumes:
- ./wp2-data:/var/www/html # 別volumes名
db2:
image: mysql:5.7
environment:
MYSQL_DATABASE: wordpress2
MYSQL_USER: wordpress2
MYSQL_PASSWORD: wordpress2
MYSQL_ROOT_PASSWORD: root
volumes:
- ./db2-data:/var/lib/mysql # 別volumes名
phpmyadmin2: # 別サービス名
image: phpmyadmin/phpmyadmin
ports:
- "8083:80" # 別ポート
environment:
PMA_HOST: db2
MYSQL_ROOT_PASSWORD: root