为什么我的 NextJS 应用程序的 Dockerfile 在构建镜像时非常慢并且大小巨大

问题描述 投票:0回答:1

我有 NX monorepo 和 NextJS Web 应用程序。它非常简单,只有一页“hello world”,没有资产和图像。

我已经为我的网络应用程序制作了一个 Dockerfile,下面是我的 Dockerfile,这是我的 3 个问题:

  1. 构建速度非常慢,构建镜像需要超过 15 分钟,而且镜像超过 1.5Gb。

  2. 在 NX 网站上,我找到了一个如何配置 Nx+NextJS+vercel 的示例,但没有找到不与任何托管提供商绑定的干净 Dockerfile 的示例,所以也许有人可以建议我的 Dockerfile 有什么问题

  3. 不确定最后一条指令:仅使用“npm start”运行 nextjs 应用程序进行生产是否正确

FROM node:16-alpine AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY . .
RUN yarn install --frozen-lockfile


FROM node:16-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npx nx build webappName --prod


FROM node:16-alpine AS runner
WORKDIR /app
ENV NODE_ENV production
COPY --from=deps /app/node_modules ./node_modules
RUN addgroup --system --gid 1001 nextgroup
RUN adduser --system --uid 1001 nextuser
COPY --from=builder /app/dist/apps/webappName ./
USER nextuser
EXPOSE 3000
ENV PORT 3000
CMD ["npm", "start"]

node.js docker next.js monorepo nrwl-nx
1个回答
0
投票

我在 github 中创建了一个演示项目,即使用 nx

my-nx-playground
。 特别为使用nextjs的网站项目添加了一个dockerfile。希望这正是您正在寻找的。

https://github.com/samarpanda/my-nx-playground

© www.soinside.com 2019 - 2024. All rights reserved.