diff --git a/DockerFile b/DockerFile new file mode 100644 index 0000000..50a6903 --- /dev/null +++ b/DockerFile @@ -0,0 +1,57 @@ +# ------------------------- +# 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"] \ No newline at end of file