# 1. Build Stage FROM rust:1.90 as builder WORKDIR /usr/src/app # Pre-build dependencies to leverage Docker layer caching COPY ./services/common-contracts /usr/src/app/services/common-contracts COPY ./services/tushare-provider-service/Cargo.toml ./services/tushare-provider-service/Cargo.lock* ./services/tushare-provider-service/ RUN mkdir -p ./services/tushare-provider-service/src && \ echo "fn main() {}" > ./services/tushare-provider-service/src/main.rs && \ cargo build --release --bin tushare-provider-service # Copy the full source code COPY ./services/tushare-provider-service /usr/src/app/services/tushare-provider-service # Build the application RUN cargo build --release --bin tushare-provider-service # 2. Runtime Stage FROM debian:bookworm-slim # Set timezone ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # Copy the built binary from the builder stage COPY --from=builder /usr/src/app/target/release/tushare-provider-service /usr/local/bin/ # Set the binary as the entrypoint ENTRYPOINT ["/usr/local/bin/tushare-provider-service"]