diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..cdc7c6a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,22 @@ +node_modules +dist +coverage +.git +.gitignore +.dockerignore +Dockerfile +README.md +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +.env +.env.* +.vscode +.idea +.DS_Store +*.log +tmp +temp +.temp +.tmp diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..76d0c20 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM node:22-alpine AS base +WORKDIR /app + +FROM base AS deps +COPY package*.json ./ +RUN npm ci + +FROM deps AS build +COPY . . +RUN mkdir -p uploads +RUN npm run build +RUN npm prune --omit=dev + +FROM node:22-alpine AS runtime +WORKDIR /app +ENV NODE_ENV=production + +COPY --from=build /app/package*.json ./ +COPY --from=build /app/node_modules ./node_modules +COPY --from=build /app/dist ./dist +COPY --from=build /app/src/templates ./src/templates +COPY --from=build /app/uploads ./uploads + +EXPOSE 4000 + +CMD ["npm", "run", "start:prod"]