Files
sejong-office/Dockerfile
T
2026-07-22 10:04:49 +09:00

39 lines
1.2 KiB
Docker

# Build frontend + backend
FROM node:22-bookworm-slim AS build
WORKDIR /app
# CAD viewer + Online3DViewer + Mermaid/Excalidraw make Vite chunking
# exceed the default ~2GB heap inside slim Docker builds.
ENV NODE_OPTIONS=--max-old-space-size=8192
COPY package.json package-lock.json* ./
COPY packages/backend/package.json packages/backend/
COPY packages/frontend/package.json packages/frontend/
RUN npm install
COPY packages ./packages
RUN npm run build -w @sejong-office/frontend \
&& npm run build -w @sejong-office/backend
# Runtime
FROM node:22-bookworm-slim AS runtime
WORKDIR /app
ENV NODE_ENV=production
ENV TEMP_DIR=/tmp/sejong
ENV PORT=3000
COPY package.json package-lock.json* ./
COPY packages/backend/package.json packages/backend/package.json
RUN npm install --omit=dev -w @sejong-office/backend && npm cache clean --force
COPY --from=build /app/packages/backend/dist ./packages/backend/dist
COPY --from=build /app/packages/backend/public ./packages/backend/public
COPY --from=build /app/packages/backend/templates ./packages/backend/templates
WORKDIR /app/packages/backend
ENV TEMP_DIR=/tmp/sejong
RUN mkdir -p /tmp/sejong
EXPOSE 3000
CMD ["node", "dist/index.js"]