# 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"]
