FROM node:22-bookworm-slim AS client WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run proto:generate && npm run typecheck && npm test && npm run build FROM rust:1-bookworm AS server WORKDIR /app COPY server server COPY proto proto RUN cargo build --release --locked --manifest-path server/Cargo.toml --bin citygen-server FROM node:22-bookworm-slim WORKDIR /app COPY --from=client /app/node_modules node_modules COPY --from=client /app/dist dist COPY --from=client /app/src src COPY --from=client /app/tools tools COPY --from=client /app/package.json package.json COPY --from=server /app/server/target/release/citygen-server /usr/local/bin/citygen-server ENV CITYGEN_BIND=0.0.0.0:3000 VOLUME ["/app/public/cities", "/app/data"] EXPOSE 3000 CMD ["citygen-server"]