# Multi-stage build for Foxhunt TLI Client FROM rust:1.75-slim as builder # Install system dependencies RUN apt-get update && apt-get install -y \ pkg-config \ libssl-dev \ libpq-dev \ protobuf-compiler \ build-essential \ && rm -rf /var/lib/apt/lists/* # Set workspace directory WORKDIR /workspace # Copy workspace Cargo files COPY ../Cargo.toml ../Cargo.lock ./ COPY ../core ./core COPY ../tli ./tli # Build the TLI client RUN cargo build --release -p tli # === RUNTIME IMAGE === FROM ubuntu:22.04 # Install runtime dependencies RUN apt-get update && apt-get install -y \ ca-certificates \ libssl3 \ libpq5 \ curl \ # Terminal and GUI dependencies libncurses6 \ libncursesw6 \ terminfo \ && rm -rf /var/lib/apt/lists/* # Create app user RUN groupadd -r foxhunt && useradd -r -g foxhunt -s /bin/bash foxhunt # Create directories RUN mkdir -p /app/config /app/logs \ && chown -R foxhunt:foxhunt /app # Copy binary from builder COPY --from=builder /workspace/target/release/tli /app/tli RUN chmod +x /app/tli # Copy configuration templates COPY config/ /app/config/ USER foxhunt WORKDIR /app # Set terminal environment ENV TERM=xterm-256color ENV COLORTERM=truecolor # Set environment variables ENV RUST_LOG=info ENV FOXHUNT_CONFIG=/app/config/config.toml # TLI is interactive, so we use a shell by default # In docker-compose, this will be overridden with appropriate command CMD ["/bin/bash"]