# ============================================================================= # FOXHUNT HFT TRADING SYSTEM - BASE MULTI-STAGE DOCKERFILE # ============================================================================= # This file provides the foundation for all Foxhunt service containers # with performance-optimized Rust builds and tiered runtime images # ============================================================================= # BUILDER STAGE - Optimized Rust Build Environment # ============================================================================= FROM rust:1.75-slim as rust-builder # Install build dependencies for all services RUN apt-get update && apt-get install -y \ # Core build tools build-essential \ pkg-config \ # SSL/TLS support libssl-dev \ ca-certificates \ # Database client libraries libpq-dev \ # Protocol buffers protobuf-compiler \ # Additional utilities curl \ git \ && rm -rf /var/lib/apt/lists/* # Configure Cargo for optimized builds ENV CARGO_NET_GIT_FETCH_WITH_CLI=true ENV CARGO_INCREMENTAL=0 ENV CARGO_PROFILE_RELEASE_LTO=true ENV CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1 ENV CARGO_PROFILE_RELEASE_PANIC=abort ENV CARGO_PROFILE_RELEASE_OPT_LEVEL=3 ENV CARGO_PROFILE_RELEASE_DEBUG=false ENV CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS=false ENV CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS=false ENV CARGO_PROFILE_RELEASE_STRIP=true # Set workspace directory WORKDIR /workspace # ============================================================================= # ULTRA-PERFORMANCE BASE (For Trading Service) # ============================================================================= FROM gcr.io/distroless/cc-debian12 as ultra-performance-base # Minimal runtime for maximum performance # - No shell, no package manager # - Minimal libc and SSL only # - ~20MB total size # - Sub-nanosecond container overhead # ============================================================================= # BALANCED PERFORMANCE BASE (For ML/Backtesting Services) # ============================================================================= FROM ubuntu:22.04-slim as balanced-performance-base # Install minimal runtime dependencies RUN apt-get update && apt-get install -y \ ca-certificates \ libssl3 \ libpq5 \ curl \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean # Create app user for security RUN groupadd -r foxhunt && useradd -r -g foxhunt foxhunt # ============================================================================= # DEVELOPMENT BASE (For TLI and development) # ============================================================================= FROM alpine:3.19 as development-base # Install runtime dependencies RUN apk add --no-cache \ ca-certificates \ libssl3 \ libpq \ curl \ bash \ # Terminal support ncurses \ && rm -rf /var/cache/apk/* # Create app user RUN addgroup -g 1001 foxhunt && adduser -D -s /bin/bash -u 1001 -G foxhunt foxhunt # ============================================================================= # CARGO CONFIGURATION TEMPLATE # ============================================================================= # This section provides the cargo configuration that should be copied # by service-specific Dockerfiles for optimal builds # Copy and cache dependencies first (leverage Docker layer caching) COPY Cargo.toml Cargo.lock ./ # Create dummy main files for all workspace members to enable dependency caching RUN mkdir -p trading_engine/src services/trading_service/src services/backtesting_service/src \ services/ml_training_service/src tli/src risk/src ml/src data/src common/src storage/src \ market-data/src database/src crates/config/src crates/model_loader/src tests/src \ backtesting/src adaptive-strategy/src risk-data/src && \ echo "fn main() {}" > services/trading_service/src/main.rs && \ echo "fn main() {}" > services/backtesting_service/src/main.rs && \ echo "fn main() {}" > services/ml_training_service/src/main.rs && \ echo "fn main() {}" > tli/src/main.rs && \ echo "pub fn dummy() {}" > trading_engine/src/lib.rs && \ echo "pub fn dummy() {}" > risk/src/lib.rs && \ echo "pub fn dummy() {}" > ml/src/lib.rs && \ echo "pub fn dummy() {}" > data/src/lib.rs && \ echo "pub fn dummy() {}" > common/src/lib.rs && \ echo "pub fn dummy() {}" > storage/src/lib.rs && \ echo "pub fn dummy() {}" > market-data/src/lib.rs && \ echo "pub fn dummy() {}" > database/src/lib.rs && \ echo "pub fn dummy() {}" > crates/config/src/lib.rs && \ echo "pub fn dummy() {}" > crates/model_loader/src/lib.rs && \ echo "pub fn dummy() {}" > tests/src/lib.rs && \ echo "pub fn dummy() {}" > backtesting/src/lib.rs && \ echo "pub fn dummy() {}" > adaptive-strategy/src/lib.rs && \ echo "pub fn dummy() {}" > risk-data/src/lib.rs # ============================================================================= # PERFORMANCE OPTIMIZATION CONFIGURATION # ============================================================================= # Memory allocation optimization for HFT ENV MALLOC_CONF="background_thread:false,dirty_decay_ms:0,muzzy_decay_ms:0" # Rust runtime optimizations ENV RUST_BACKTRACE=0 ENV RUST_LOG_STYLE=never # CPU optimization hints ENV CARGO_CFG_TARGET_FEATURE="+crt-static" # ============================================================================= # HEALTH CHECK UTILITIES # ============================================================================= # Common health check patterns for all services # Health check for gRPC services (copy this to service Dockerfiles) # HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ # CMD curl -f http://localhost:8081/health || exit 1 # ============================================================================= # BUILD INSTRUCTIONS FOR SERVICE-SPECIFIC DOCKERFILES # ============================================================================= # 1. ULTRA-PERFORMANCE SERVICES (Trading Service): # - Use ultra-performance-base # - Static linking with musl # - No debug symbols # - Minimal dependencies # 2. BALANCED SERVICES (ML Training, Backtesting): # - Use balanced-performance-base # - Dynamic linking acceptable # - Full feature sets # - Service mesh compatible # 3. DEVELOPMENT SERVICES (TLI): # - Use development-base # - Debug symbols included # - Shell access # - Development tools