Files
YouduWiki/web/Dockerfile.app
2026-05-21 22:43:41 +08:00

71 lines
1.7 KiB
Erlang

# ============================================
# YouduWiki Wiki -
# : ./web
# ============================================
FROM node:22-alpine AS builder
ENV PNPM_REGISTRY=https://registry.npmmirror.com
WORKDIR /build
# pnpm
RUN corepack enable && corepack prepare pnpm@10 --activate
# workspace
COPY pnpm-workspace.yaml pnpm-lock.yaml package.json ./
# workspace package.json
COPY packages/icons/package.json packages/icons/
COPY packages/themes/package.json packages/themes/
COPY packages/ui/package.json packages/ui/
COPY admin/package.json admin/
COPY app/package.json app/
#
RUN pnpm install --frozen-lockfile
# (app workspace )
COPY packages/icons/ packages/icons/
COPY packages/themes/ packages/themes/
COPY packages/ui/ packages/ui/
COPY app/ app/
# Next.js
RUN pnpm --filter panda-wiki-app build
# ============================================
#
# ============================================
FROM node:22-alpine AS runner
ENV NODE_ENV=production
RUN addgroup -g 1001 -S nodejs && \
adduser -S nextjs -u 1001
WORKDIR /app
# public
COPY --from=builder --chown=nextjs:nodejs /build/app/public ./app/public
# standalone
COPY --from=builder --chown=nextjs:nodejs /build/app/dist/standalone ./
#
COPY --from=builder --chown=nextjs:nodejs /build/app/dist/static ./app/dist/static
# public
RUN mkdir -p app/public && \
cp -r /build/app/public/. app/public/ 2>/dev/null || true
USER nextjs
EXPOSE 3010
ENV PORT=3010
ENV HOSTNAME="0.0.0.0"
CMD ["node", "app/server.js"]