如何用 Docker 部署 Next.js 应用?(附避坑指南)

132 阅读2分钟

📝 如何用 Docker 部署 Next.js 应用?(附避坑指南)

从零开始,一步步教你用 Docker 部署 Next.js 15 应用,解决国内网络、依赖冲突、空响应等常见问题。

🎯 适用场景

  • 本地开发完成,想容器化部署
  • 使用 Next.js 15 + React 19
  • 国内环境,拉取镜像慢(最大的问题)
  • 遇到 npm 依赖冲突或 ERR_EMPTY_RESPONSE

首先你要确保你自己的项目能正常运行,以及你的Docker Desktop win版已经下载并安装好了,记得WSL -update更新。

✅ 第一步:准备 Dockerfile

先粘贴我的package.json

{
  "name": "next-app",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev --turbopack",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    ...
    "next": "15.0.3",
    "react": "^19.1.1",
    "react-dom": "^19.1.1",
    ...
  },
}

因为我比较擅长用yarn,所以使用yarn 如果是npm的话,就删除图中标注的***的语句。 根据package.json对照,在项目根目录创建 Dockerfile

# 使用 Node.js 18 Alpine 镜像(自带 Yarn)
FROM node:18-alpine

WORKDIR /app

# 复制 package.json 和 yarn.lock
COPY package*.json ./
***COPY yarn.lock ./

# 配置淘宝镜像源(可选)
***RUN yarn config set registry https://registry.npmmirror.com

# 安装依赖
***RUN yarn install
如果是npm则直接 RUN npm install

# 复制源码
COPY . .

# 构建项目
***RUN yarn build
RUN npm build

EXPOSE 3000

# 启动应用
***CMD ["yarn", "dev"]
CMD ["npm", "dev"]

💡 如果你用 npm,把 yarn install 换成 npm install


✅ 第三步:配置镜像加速(国内必备)

  1. 访问 阿里云容器镜像服务

  2. 获取你的专属加速地址 image.png

  3. 在 Docker Desktop 中配置:

{
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}

image.png

这能让你秒速拉取 node:18-alpine 镜像!


✅ 第四步:构建镜像

docker build -t my-nextjs-app .

✅ 第五步:运行容器

docker run -d -p 3000:3000 --name my-nextjs-container my-nextjs-app

✅ 第六步:访问应用

打开浏览器:

http://localhost:3000

🎉 成功!


🚨 常见问题 & 解决方案

问题原因解决
pull access denied国内无法访问 Docker Hub配置阿里云镜像加速
ERESOLVE 依赖冲突framer-motion 与 React 19 版本冲突--legacy-peer-deps
ERR_EMPTY_RESPONSENext.js 默认监听 localhost-H 0.0.0.0
yarn.lock 不存在未生成锁文件先本地运行 yarn install

🎁 小贴士

  • ✅ 使用 .dockerignore 忽略 node_modules.git
  • ✅ 多阶段构建可进一步减小镜像体积
  • ✅ 可推送到阿里云容器镜像服务,用于生产部署

这样访问对应的端口号就能访问到了

image.png