You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker化Next.js应用时Prisma迁移报P1001:无法连接MySQL

问题:Docker化Next.js应用时Prisma迁移无法连接MySQL

执行docker-compose up -d部署Next.js+MySQL应用时,Prisma迁移环节报错:

Error: P1001: Can't reach database server at `mysql`:`3306`

核心问题分析

  1. 构建阶段无法访问MySQL容器:Dockerfile中的RUN npx prisma migrate deploy属于镜像构建阶段的命令,此时MySQL容器还未启动(镜像构建完成后才会创建并启动容器),自然无法连接到MySQL服务。
  2. depends_on的局限性:docker-compose的depends_on仅保证MySQL容器优先启动,但不会等待MySQL服务完全就绪(比如完成初始化、可以接受连接请求)。

解决方案1:将迁移移到容器启动时执行

修改Dockerfile,把迁移命令从构建阶段移到容器启动脚本中,确保MySQL服务就绪后再执行迁移:

FROM node:18 as development

WORKDIR /usr/app

COPY package*.json .

RUN npm install -g pnpm
# 安装netcat用于检测MySQL端口状态
RUN apt-get update && apt-get install -y netcat-traditional && rm -rf /var/lib/apt/lists/*

RUN pnpm install

COPY . .

RUN npx prisma generate

EXPOSE 3000

# 先等待MySQL端口开放,再执行迁移,最后启动开发服务
CMD ["sh", "-c", "until nc -z mysql 3306; do sleep 1; echo '等待MySQL启动...'; done; npx prisma migrate deploy; pnpm run dev"]

解决方案2:使用wait-for-it脚本等待服务就绪

借助wait-for-it.sh脚本更可靠地等待MySQL服务就绪:

  1. 下载脚本到项目根目录并添加执行权限:
curl -o wait-for-it.sh https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh
chmod +x wait-for-it.sh
  1. 修改Dockerfile:
FROM node:18 as development

WORKDIR /usr/app

COPY package*.json .
COPY wait-for-it.sh .

RUN npm install -g pnpm
RUN apt-get update && apt-get install -y bash && rm -rf /var/lib/apt/lists/*

RUN pnpm install

COPY . .

RUN npx prisma generate

EXPOSE 3000

# 等待MySQL服务就绪后执行迁移并启动服务
CMD ["sh", "-c", "./wait-for-it.sh mysql:3306 -- npx prisma migrate deploy && pnpm run dev"]

解决方案3:手动分步启动容器

如果不想修改配置文件,可以先单独启动MySQL容器,等其初始化完成后再启动前端:

# 启动MySQL容器
docker-compose up -d mysql

# 等待MySQL初始化完成(约2分钟,可根据实际情况调整)
sleep 120

# 启动前端容器
docker-compose up -d frontend

额外优化:修正MySQL容器Volume配置

你的docker-compose.yml中MySQL的Volume路径错误,默认数据目录是/var/lib/mysql,而非/var/lib/mysql/data,修正后才能正确持久化数据:

services:
  mysql:
    # ...其他配置
    volumes:
      - ./data:/var/lib/mysql # 修正此处路径

内容的提问来源于stack exchange,提问作者Nayan Prasad P K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 04:36:34