【Prisma】migrate devが「Can't reach database server」とエラーになる
Error: P1001: Can't reach database server at `localhost`:`3306`
Prismaでnpx prisma migrate dev --name init
しようとすると、上記のエラーになった。
前提
version: '3.8'
services:
app:
container_name: app-container
ports:
- '3000:3000'
- '5555:5555'
...
db:
container_name: db-container
image: mysql:5.7
environment:
MYSQL_DATABASE: mydb
MYSQL_ROOT_PASSWORD: pw
ports:
- '3306:3306'
...
Dockerでappコンテナ(NestJs)とdbコンテナ(MySQL)を立てており、appコンテナ内でマイグレーションを実行しようとした。
解決法
datasource db {
provider = "mysql"
url = "mysql://root:pw@localhost:3306/mydb"
url = "mysql://root:pw@db:3306/mydb"
}
Prismaから接続するDATABASE_URL
のホスト名をlocalhost
からサービス名(db
)に修正する。
というのもappコンテナからするとlocalhostは自身になってしまいエラー文の通りDBサーバーに接続できないため、dbコンテナを指定する必要がある。