# Multi-stage build for Foxhunt TLI (Terminal Interface Client) # Wave 71 Agent 8: Production-optimized Docker image # ============================================================================= # Builder Stage # ============================================================================= FROM rust:1.83-slim-bookworm AS builder # Install build dependencies RUN apt-get update && apt-get install -y \ pkg-config \ libssl-dev \ protobuf-compiler \ && rm -rf /var/lib/apt/lists/* # Set working directory WORKDIR /build # Copy workspace manifests COPY Cargo.toml Cargo.lock ./ # Copy all workspace crates (all members required for workspace build) COPY common ./common COPY config ./config COPY trading_engine ./trading_engine COPY risk ./risk COPY risk-data ./risk-data COPY trading-data ./trading-data COPY ml ./ml COPY ml-data ./ml-data COPY data ./data COPY backtesting ./backtesting COPY adaptive-strategy ./adaptive-strategy COPY storage ./storage COPY market-data ./market-data COPY database ./database COPY tli ./tli COPY tests ./tests COPY services/api_gateway ./services/api_gateway COPY services/trading_service ./services/trading_service COPY services/backtesting_service ./services/backtesting_service COPY services/ml_training_service ./services/ml_training_service # Build dependencies first (layer caching optimization) RUN mkdir -p tli/src && \ echo "fn main() {}" > tli/src/main.rs && \ cargo build --release -p tli && \ rm -rf tli/src # Copy actual source code COPY tli/src ./tli/src COPY tli/build.rs ./tli/build.rs 2>/dev/null || true # Build the application RUN cargo build --release -p tli # ============================================================================= # Runtime Stage # ============================================================================= FROM debian:bookworm-slim # Install runtime dependencies RUN apt-get update && apt-get install -y \ ca-certificates \ libssl3 \ curl \ && rm -rf /var/lib/apt/lists/* # Create non-root user RUN groupadd --system --gid 1000 foxhunt && \ useradd --system --uid 1000 --gid foxhunt --shell /bin/bash foxhunt # Create application directories RUN mkdir -p /app/config /app/logs && \ chown -R foxhunt:foxhunt /app # Set working directory WORKDIR /app # Copy binary from builder COPY --from=builder /build/target/release/tli ./tli RUN chmod +x ./tli # Switch to non-root user USER foxhunt # Set terminal environment ENV TERM=xterm-256color # Run the application (interactive terminal) ENTRYPOINT ["./tli"]