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

Docker化Next.js应用时提示找不到生产构建目录的问题

问题根源

你遇到的错误核心原因是docker-compose中的本地目录挂载覆盖了容器内的构建产物:volumes: - ./:/app 将你本地的项目目录直接挂载到容器的/app路径,完全覆盖了镜像构建时复制进去的.next目录,导致容器启动时找不到生产构建文件。

解决方案

1. 修正docker-compose配置(移除本地挂载)

生产环境下不需要挂载本地代码,镜像本身已经包含了构建完成的应用。修改后的docker-compose.yml:

version: '3'
services:
  playgames-frontend:
    build: .
    ports:
      - "3000:7777"  # 匹配prod阶段设置的PORT=7777
    environment:
      - NEXT_PUBLIC_PRODUCTION_ENDPOINT=${NEXT_PUBLIC_PRODUCTION_ENDPOINT}
      - NEXT_PUBLIC_PAGE=${NEXT_PUBLIC_PAGE}
      - NEXT_PUBLIC_STRIPE_KEY=${NEXT_PUBLIC_STRIPE_KEY}
      - SCHEMA_ENDPOINT=${SCHEMA_ENDPOINT}

2. 优化Dockerfile(修复构建细节)

原Dockerfile存在两个小问题:构建阶段未传递环境变量、缺失public静态资源复制。优化后的版本:

FROM node:14-alpine3.14 as deps

ARG NEXT_PUBLIC_PRODUCTION_ENDPOINT
ARG NEXT_PUBLIC_PAGE
ARG NEXT_PUBLIC_STRIPE_KEY
ARG SCHEMA_ENDPOINT

RUN apk add --no-cache libc6-compat

RUN mkdir /app && chown -R node:node /app
WORKDIR /app
COPY --chown=node:node package.json package-lock.json ./
RUN npm install && npm cache clean --force

FROM node:14-alpine3.14 as build
RUN mkdir /app && chown -R node:node /app
WORKDIR /app
ENV NODE_ENV=production
# 传递构建时的环境变量,确保Next.js静态构建能注入这些值
ARG NEXT_PUBLIC_PRODUCTION_ENDPOINT
ARG NEXT_PUBLIC_PAGE
ARG NEXT_PUBLIC_STRIPE_KEY
ARG SCHEMA_ENDPOINT
ENV NEXT_PUBLIC_PRODUCTION_ENDPOINT=$NEXT_PUBLIC_PRODUCTION_ENDPOINT
ENV NEXT_PUBLIC_PAGE=$NEXT_PUBLIC_PAGE
ENV NEXT_PUBLIC_STRIPE_KEY=$NEXT_PUBLIC_STRIPE_KEY
ENV SCHEMA_ENDPOINT=$SCHEMA_ENDPOINT

COPY --chown=node:node . ./
COPY --from=deps /app/node_modules ./node_modules
RUN npm run build

FROM node:14-alpine3.14 as prod
RUN mkdir /app && chown -R node:node /app
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=7777
COPY --chown=node:node package.json package-lock.json ./
RUN npm ci --production && npm cache clean --force
COPY --from=build /app/.next ./.next
COPY --from=build /app/next.config.js ./
# 复制public目录,避免静态资源缺失
COPY --from=build /app/public ./public
USER node
CMD ["node_modules/.bin/next", "start"]

3. 重新构建并运行

执行以下命令重新部署:

docker-compose build
docker-compose up -d

内容的提问来源于stack exchange,提问作者pythonc229

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:25:16