テスト環境と本番環境でDBを分けたいときがあります
そんな時にDockerでDBを二つ立ち上げる方法について記載します
Docker file
まずは結論
version: "3.8"
services:
app:
build: ./your/app/dockerfile
depends_on:
- mysql
- test_mysql
command: execute command
ports:
- '8000:8000'
- '8080:8080'
mysql:
build: ./your/mysql/image/path
environment:
MYSQL_DATABASE: your_db
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
- "33060:33060"
volumes:
- mysql-data:/var/lib/mysql:cached
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mysql
- PMA_USER=user
- PMA_PASSWORD=password
depends_on:
- mysql
links:
- mysql
ports:
- 8090:80
volumes:
- /sessions
- ./tools/phpMyAdmin/php.ini:/usr/local/etc/php/php.ini
test_mysql:
build: ./your/test/mysql/image/path
environment:
MYSQL_DATABASE: your_test_db
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
ports:
- "3307:3306"
volumes:
- test-mysql-data:/var/lib/mysql:cached
test_phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=test_mysql
- PMA_USER=user
- PMA_PASSWORD=password
depends_on:
- test_mysql
links:
- test_mysql
ports:
- 8091:80
volumes:
- /sessions
- ./tools/phpMyAdmin/php.ini:/usr/local/etc/php/php.ini
volumes:
mysql-data:
test-mysql-data:
実行方法
注意点
すでにある環境が立ち上げ済みで、dockerファイルを追記していたら、以下のコマンドで、既存のDBデータをすべて消して再度イメージをビルドしなおさないと私の環境ではエラーになりました
**絶対に本番環境ではやらないでください。**データがすべて消えます
//イメージとデータの削除
docker-compose down --rmi all --volumes
//ビルド
docker-compose build --no-cache
//コンテナ立ち上げ
docker-composer up
本番環境:http://localhost:8090/
テスト環境:http://localhost:8091/
で二つphpMyAdminが立ち上がっていると思います
質問や間違いがあればコメントからお願いします!
## 宣伝
ツイッターもやってます
技術や製品開発に関する事などを呟いてますので、フォローお願いします
https://twitter.com/wkyIghw8MlLpyJE