macro_traffic_sim 0.1.2

gRPC interface for macroscopic traffic simulation via 4-step demand model
Documentation
# Multi-stage Dockerfile for local build with local macro_traffic_sim_core
#
# Build from parent directory:
# cd /home/dimitrii/rust_work
# docker build -f macro_traffic_sim_grpc/Dockerfile.local -t macro-traffic-sim-server:local-feature .
#
# Run:
# docker run --rm -it --name macro-traffic-sim-server -p 50052:50052 macro-traffic-sim-server:local-feature

# Builder
FROM rust:1.91-alpine AS builder
WORKDIR /app

# Install build dependencies
RUN apk add --no-cache musl-dev protobuf-dev tini-static

# Copy both core and grpc projects
COPY macro_traffic_sim_core ./macro_traffic_sim_core
COPY macro_traffic_sim_grpc ./macro_traffic_sim_grpc

# Build grpc service (which depends on local core)
WORKDIR /app/macro_traffic_sim_grpc
RUN cargo build --release --features server && \
    strip target/release/macro_traffic_sim

# Runtime
FROM scratch
LABEL org.opencontainers.image.source="https://github.com/LdDl/macro_traffic_sim_grpc"
LABEL org.opencontainers.image.description="Macroscopic traffic simulation gRPC server (local build)"
LABEL org.opencontainers.image.licenses="Apache-2.0"
COPY --from=builder /sbin/tini-static /tini
COPY --from=builder /app/macro_traffic_sim_grpc/target/release/macro_traffic_sim /macro_traffic_sim
EXPOSE 50052
ENTRYPOINT ["/tini", "--", "/macro_traffic_sim"]