🕌
Docker + MySQLの環境変数の変更が適用されないときの対処法
結論
docker compose down
docker volume ls
docker volume rm {volume name}
docker-compose up --build -d
状況
.env
ROOT_PASS=root #pass→rootに変更
DB_NAME=test_db
DB_USER=user
DB_PASS=pass
DB_PORT=3306
TZ=Asia/Tokyo
compose.yml
version: '3'
services:
db:
image: mysql:8
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${ROOT_PASS}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASS}
TZ: ${TZ}
ports:
- ${DB_PORT}:3306
volumes:
- db-store:/var/lib/mysql
- ./my.cnf:/etc/mysql/conf.d/my.cnf
volumes:
db-store:
- .envに環境変数を登録
- compose.ymlで読み込む
- envの値を変更しても値が適用されない
mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- 環境変数変更前のpassなら入れるが、rootだと入れない=新しい環境変数が適用されていない
- 結論として、volumeを削除して再ビルドすると治った。
- volumeに環境変数の値が保存されていたままだった?
Discussion