# Multi-stage build for Foxhunt Backtesting Service FROM nvidia/cuda:12.1-devel-ubuntu22.04 as builder # Install Rust and system dependencies RUN apt-get update && apt-get install -y \ curl \ build-essential \ pkg-config \ libssl-dev \ libpq-dev \ protobuf-compiler \ && rm -rf /var/lib/apt/lists/* # Install Rust RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y ENV PATH="/root/.cargo/bin:${PATH}" # Set workspace directory WORKDIR /workspace # Copy workspace Cargo files COPY ../../Cargo.toml ../../Cargo.lock ./ COPY ../../core ./core COPY ../../risk ./risk COPY ../../data ./data COPY ../../adaptive-strategy ./adaptive-strategy COPY ../backtesting_service ./services/backtesting_service # Build the backtesting service RUN cargo build --release -p backtesting_service # === RUNTIME IMAGE === FROM nvidia/cuda:12.1-runtime-ubuntu22.04 # Install runtime dependencies RUN apt-get update && apt-get install -y \ ca-certificates \ libssl3 \ libpq5 \ curl \ python3 \ python3-pip \ && rm -rf /var/lib/apt/lists/* # Install Python packages for analysis RUN pip3 install matplotlib pandas numpy jupyter # Create app user RUN groupadd -r foxhunt && useradd -r -g foxhunt foxhunt # Create directories RUN mkdir -p /app/config /app/data /app/backtests /app/logs \ && chown -R foxhunt:foxhunt /app # Copy binary from builder COPY --from=builder /workspace/target/release/backtesting_service /app/backtesting_service RUN chmod +x /app/backtesting_service # Copy configuration templates COPY config/ /app/config/ USER foxhunt WORKDIR /app # Expose ports EXPOSE 8082 8083 6006 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=45s --retries=3 \ CMD curl -f http://localhost:8083/health || exit 1 # Set environment variables ENV RUST_LOG=info ENV FOXHUNT_CONFIG=/app/config/config.toml ENV FOXHUNT_BACKTEST_DATA_DIR=/app/backtests CMD ["./backtesting_service"]