環境
command | version
--------------------------------------------------------------------------
wsl --version | WSL バージョン: 2.2.4.0
docker --version | Docker version 26.1.4, build 5650f9b
docker compose version | Docker Compose version v2.27.1-desktop.1
npm --version | 10.7.0
node --version | v20.15.0
mysql --version | mysql Ver 8.0.38 for Linux on x86_64
mysql -u root -p${PW} | Server version: 8.0.38 MySQL Community Server
エラー詳細
バックエンド用コンテナとDBコンテナを使用している。下記コマンドをバックエンド用コンテナから実行したとき、下記のエラーメッセージが表示された。
- エラーが発生したコマンド
npx prisma migrate dev --name init
- エラーメッセージ
root@9d2e635a5c67:/app# npx prisma migrate dev --name init
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "sample" at "localhost:3306"
Error: P1001: Can't reach database server at `localhost:3306`
Please make sure your database server is running at `localhost:3306`.
root@9d2e635a5c67:/app#
- prisma.schema
prisma.schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = "mysql://root:root@localhost:3306/sample"
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
}
解決方法
- prisma.schema の URL を
localhost
ではなく docker-compose.yml に記載したサービス名とする
prisma.schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
- url = "mysql://root:root@localhost:3306/sample"
+ url = "mysql://root:root@db:3306/sample"
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
}
docker-compose.yml
...
...
services:
db:
build: ./db
ports:
- '3306:3306'
参考資料