33 lines
1006 B
Docker
33 lines
1006 B
Docker
# Stage 1: Build frontend
|
|
FROM node:20-slim AS frontend
|
|
WORKDIR /app
|
|
RUN npm i -g pnpm
|
|
COPY package.json pnpm-lock.yaml ./
|
|
RUN pnpm install --frozen-lockfile
|
|
COPY src/ src/
|
|
COPY index.html vite.config.ts tsconfig.json ./
|
|
COPY tailwind.config.* postcss.config.* ./
|
|
RUN pnpm build
|
|
|
|
# Stage 2: Build Rust backend
|
|
FROM rust:1-bookworm AS backend
|
|
WORKDIR /app
|
|
COPY Cargo.toml Cargo.lock ./
|
|
COPY crates/ crates/
|
|
COPY src-web/ src-web/
|
|
# Create a dummy src-tauri to satisfy workspace (not built)
|
|
RUN mkdir -p src-tauri/src && echo 'fn main() {}' > src-tauri/src/main.rs && echo 'pub fn run() {}' > src-tauri/src/lib.rs
|
|
COPY src-tauri/Cargo.toml src-tauri/
|
|
COPY src-tauri/build.rs src-tauri/
|
|
COPY src-tauri/tauri.conf.json src-tauri/
|
|
RUN cargo build --release -p dbx-web
|
|
|
|
# Stage 3: Final image
|
|
FROM debian:bookworm-slim
|
|
COPY --from=backend /app/target/release/dbx-web /usr/local/bin/
|
|
COPY --from=frontend /app/dist /app/static
|
|
ENV DBX_STATIC_DIR=/app/static
|
|
ENV DBX_DATA_DIR=/app/data
|
|
EXPOSE 4224
|
|
CMD ["dbx-web"]
|