minmal-file-cloud-email-pim.../clients/desktop/Dockerfile.build

51 lines
1.4 KiB
Docker

# 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"]