【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コンテナを指定する必要がある。