# The photos client, built by the mesh from this repository (novox/hq ADR 0069): the react build # happens here rather than in a CI step that copied its output in. # # One base, named rather than pinned (novox/hq issue 044), declared in module.json's `build.on`: # the site is compiled and served by the same node the API already needs. Serving is # client-server/serve.mjs — static files, the SPA fallback, and env-config.js regenerated from the # container's environment at start, which is how one built image serves under any API URL. The # nginx-and-bash arrangement this replaces did the same with two more moving parts. # # The build context is the repository root; every COPY says so. ARG NODE_BASE FROM ${NODE_BASE} AS build WORKDIR /build COPY client/package.json client/package-lock.json ./ RUN npm ci COPY client/public ./public COPY client/src ./src COPY client/.env ./.env RUN npm run build FROM ${NODE_BASE} ENV NODE_ENV=production COPY client-server/serve.mjs /serve.mjs COPY --from=build /build/build /site/ COPY client/.env /site/.env CMD ["node", "/serve.mjs"]