docker-composeで立てたmysqlの接続情報が変更できない
date: 2020-12-31
dockerを使用してmysqlを立てた。
environmentにてパスワードとかDB名を指定していたが、その情報を変えても変更できなくなった。
設定ファイルはこんな感じ
docker-compose.yml
version: '3'
services:
db:
image: mysql:8.0
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: root!
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASS}
TZ: 'Asia/Tokyo'
ports:
- ${DB_PORT}:3306
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./mysql/sql:/docker-entrypoint-initdb.d
.env
DB_NAME=mydb
DB_PORT=3306
DB_USER=mydb_user
DB_PASS=mydb_user!
DB_HOST=localhost
結論
コンテナ作成時に作られた接続情報がファイルとして残っていた。
DBの情報は./mysql/data
に入っているので、当たり前っちゃ当たり前。
解決方法
./mysql/data
を削除する
rm -rf ./mysql/data
ボリュームを作成している場合
ボリュームにDBデータを保存するようにしてる場合も同様のことをしてあげれば、接続情報を変更できる。
docker-compose.yml
version: '3'
services:
db:
image: mysql:8.0
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: root!
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASS}
TZ: 'Asia/Tokyo'
ports:
- ${DB_PORT}:3306
volumes:
- db-data:/var/lib/mysql
- ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./mysql/sql:/docker-entrypoint-initdb.d
volumes:
db-data:
db-dataというボリュームを作っているので、コンテナ起動時に接続情報などDBのデータは全てdb-dataに入る。
docker volume ls
ボリューム一覧を見るとコンテナ名+ボリューム名
のボリュームがあるので削除してやればよい。
今回であれば、mysql_db-data
を削除
docker volume rm mysql_db-data
busyboxとかで作るボリュームコンテナの場合も同じように何かしら消してあげればよいはず。
date: 2020-12-31