Dockerfile (797B)
1 FROM node:22-bookworm-slim AS build 2 3 RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* 4 5 WORKDIR /app 6 COPY package.json package-lock.json ./ 7 RUN npm ci 8 9 COPY . . 10 # Mount or COPY data/metadata.tsv before build in production 11 RUN npm run index-metadata -- --if-stale || true 12 RUN npm run build 13 14 FROM node:22-bookworm-slim AS runtime 15 16 WORKDIR /app 17 ENV NODE_ENV=production 18 ENV SERVE_STATIC=true 19 ENV PORT_INDEX=0 20 21 COPY package.json package-lock.json ./ 22 RUN npm ci --omit=dev && npm cache clean --force 23 24 COPY --from=build /app/dist ./dist 25 COPY --from=build /app/dist-server ./dist-server 26 COPY --from=build /app/data ./data 27 COPY --from=build /app/public ./public 28 COPY --from=build /app/ecosystem.config.cjs ./ 29 30 EXPOSE 38471 31 CMD ["node", "dist-server/server/index.js"]