Fundamental_Analysis/services/api-gateway/Dockerfile
Lv, Qi a59b994a92 WIP: Commit all pending changes across services, frontend, and docs
- Sync updates for provider services (AlphaVantage, Finnhub, YFinance, Tushare)
- Update Frontend components and pages for recent config changes
- Update API Gateway and Registry
- Include design docs and tasks status
2025-11-27 02:45:56 +08:00

32 lines
1.2 KiB
Docker

# 1. Build Stage
FROM rust:1.90 as builder
WORKDIR /usr/src/app
# Deterministic dependency caching without shipping a stub binary
COPY ./services/common-contracts /usr/src/app/services/common-contracts
COPY ./services/api-gateway/Cargo.toml ./services/api-gateway/Cargo.lock* ./services/api-gateway/
WORKDIR /usr/src/app/services/api-gateway
# Copy the full source code and build the final binary (Debug mode for speed)
COPY ./services/api-gateway /usr/src/app/services/api-gateway
RUN cargo build --bin api-gateway
# 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
# Install minimal runtime deps:
# - ca-certificates/libssl3: TLS support for outbound HTTPS
# - curl: required for container healthcheck defined in docker-compose.yml
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libssl3 curl && rm -rf /var/lib/apt/lists/*
# Copy the built binary from the builder stage
COPY --from=builder /usr/src/app/services/api-gateway/target/debug/api-gateway /usr/local/bin/
# Set the binary as the entrypoint
ENTRYPOINT ["/usr/local/bin/api-gateway"]