# Multi-stage build container for Tauri Desktop Client # Supports: linux, windows (cross-compile) FROM rust:1.94-bookworm AS builder # Install system dependencies for Tauri RUN apt-get update && apt-get install -y --no-install-recommends \ libwebkit2gtk-4.1-dev \ libgtk-3-dev \ libayatana-appindicator3-dev \ librsvg2-dev \ libcairo2-dev \ libgdk-pixbuf-2.0-dev \ libsoup-3.0-dev \ libjavascriptcoregtk-4.1-dev \ pkg-config \ curl \ wget \ file \ && rm -rf /var/lib/apt/lists/* # Install Node.js RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* # Windows cross-compile tools RUN apt-get update && apt-get install -y --no-install-recommends \ gcc-mingw-w64-x86-64 \ nsis \ && rm -rf /var/lib/apt/lists/* \ && rustup target add x86_64-pc-windows-gnu || true WORKDIR /build # Cache Rust dependencies COPY src-tauri/Cargo.toml src-tauri/Cargo.lock* ./src-tauri/ COPY src-tauri/build.rs ./src-tauri/ RUN mkdir -p src-tauri/src && echo "pub fn run() {}" > src-tauri/src/lib.rs \ && echo "fn main() { minicloud_sync_lib::run() }" > src-tauri/src/main.rs \ && cd src-tauri && cargo fetch 2>/dev/null || true # Copy full source COPY . . # Install npm dependencies RUN npm ci # Default: build for linux CMD ["npm", "run", "tauri", "build"]