# GitDataAI Database Migration Dockerfile # Multi-stage build for Rust migration tool # Stage 1: Build the application FROM rust:1.96-bookworm AS builder # Install system dependencies RUN apt-get update && apt-get install -y \ pkg-config \ libssl-dev \ libpq-dev \ cmake \ && rm -rf /var/lib/apt/lists/* # Create app directory WORKDIR /app # Copy workspace files COPY Cargo.toml Cargo.lock ./ COPY app/ app/ COPY lib/ lib/ # Build the migration binary RUN cargo build --release --bin migrate # Stage 2: Create runtime image FROM debian:bookworm-slim # Install runtime dependencies RUN apt-get update && apt-get install -y \ libssl3 \ libpq5 \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # Create non-root user RUN useradd -r -s /bin/false appuser # Create app directory RUN mkdir -p /app && chown -R appuser:appuser /app # Copy binary from builder COPY --from=builder /app/target/release/migrate /app/migrate # Copy migration files COPY --from=builder /app/lib/migrate/sql /app/sql # Set ownership RUN chown -R appuser:appuser /app # Switch to non-root user USER appuser # Set working directory WORKDIR /app # Run migrations by default CMD ["./migrate", "up"]