我有 NX monorepo 和 NextJS Web 应用程序。它非常简单,只有一页“hello world”,没有资产和图像。
我已经为我的网络应用程序制作了一个 Dockerfile,下面是我的 Dockerfile,这是我的 3 个问题:
构建速度非常慢,构建镜像需要超过 15 分钟,而且镜像超过 1.5Gb。
在 NX 网站上,我找到了一个如何配置 Nx+NextJS+vercel 的示例,但没有找到不与任何托管提供商绑定的干净 Dockerfile 的示例,所以也许有人可以建议我的 Dockerfile 有什么问题
不确定最后一条指令:仅使用“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"]
我在 github 中创建了一个演示项目,即使用 nx
my-nx-playground
。
特别为使用nextjs的网站项目添加了一个dockerfile。希望这正是您正在寻找的。