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