# ------------------------- # 1️⃣ Build Stage # ------------------------- FROM rust:1.76 as builder WORKDIR /app # Install dependencies required for sqlx + native-tls RUN apt-get update && apt-get install -y \ pkg-config \ libssl-dev \ ca-certificates \ sqlite3 \ libsqlite3-dev \ && rm -rf /var/lib/apt/lists/* # Cache dependencies COPY Cargo.toml Cargo.lock ./ RUN mkdir src && echo "fn main() {}" > src/main.rs RUN cargo build --release RUN rm -rf src # Copy real source COPY . . # Build release binary RUN cargo build --release # ------------------------- # 2️⃣ Runtime Stage # ------------------------- FROM debian:bookworm-slim WORKDIR /app # Install runtime deps only RUN apt-get update && apt-get install -y \ ca-certificates \ libssl3 \ sqlite3 \ libsqlite3-0 \ && rm -rf /var/lib/apt/lists/* # Copy compiled binary COPY --from=builder /app/target/release/server /app/server # Create data directory RUN mkdir -p /data # Expose port (change if needed) EXPOSE 8080 # Declare volume for SQLite database VOLUME ["/data"] # Run the server CMD ["./server"]