背景
- laravel + Vue3 + mysqlの構成でアプリを開発中
- ローカル開発環境をXAMPPからDockerに移行
- docker-composeでappコンテナとdbコンテナを立ち上げることはできたが、appにアクセスすると以下のエラーになる
SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select * from `sessions` where `id` = xxx limit 1)`
解決法
接続先のDB_HOST
をDBのサービス名またはコンテナ名にする
docker-compose.yml
services:
...
mysql: #サービス名
image: mysql:8.0
container_name: mysql-db #コンテナ名
ports:
- "3306:3306"
.env
DB_HOST=127.0.0.1 ⇒ NG
DB_HOST=mysql ⇒ OK
DB_HOST=mysql-db ⇒ OK
参考