# The photos API, built by the mesh from this repository (novox/hq ADR 0069): the build happens # here rather than in a CI step that copied its output in — an image the mesh can rebuild from a # commit is one whose contents that commit fully determines. # # The base is named rather than pinned (novox/hq issue 044): declared in module.json's `build.on`, # so the copy the mesh holds answers it. One base for both stages — the runtime stage installs # production dependencies itself (sharp is a native module rollup cannot bundle), so it needs npm # exactly as the build stage does. # # The build context is the repository root; every COPY says so. ARG NODE_BASE FROM ${NODE_BASE} AS build WORKDIR /build COPY server/package.json server/package-lock.json ./ RUN npm ci COPY server/rollup.config.mjs ./ COPY server/src ./src RUN npm run build FROM ${NODE_BASE} ENV NODE_ENV=production WORKDIR /app COPY server/package.json server/package-lock.json ./ RUN npm ci --omit=dev COPY --from=build /build/dist ./dist CMD ["node", "dist/server.cjs", "--enable-source-maps"]