Dockerfile62 lines · 1349 chars FROM node:20-bullseye-slim AS builder
WORKDIR /workspace
# Install build dependencies required by Electron apps
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
python3 \
git \
build-essential \
pkg-config \
libx11-xcb1 \
libnss3 \
libxss1 \
libasound2 \
libatk-bridge2.0-0 \
libgtk-3-0 \
libsecret-1-0 \
libgbm1 \
libxkbcommon0 \
libxcb-dri3-0 \
libx11-6 \
--no-install-recommends && rm -rf /var/lib/apt/lists/*
# Install pnpm for workspace management
RUN npm i -g pnpm
# Copy repository into the image
COPY . .
# Install dependencies for the workspace
RUN pnpm i
# Build the desktop app from source
WORKDIR /workspace/apps/desktop
RUN pnpm update:main-hash
RUN pnpm build:electron-vite
RUN pnpm build:electron-forge
FROM debian:bookworm-slim AS runtime
# Minimal runtime dependencies for AppImage or Electron-based artifacts
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
libnss3 \
libasound2 \
libx11-xcb1 \
libxcb-dri3-0 \
libxss1 \
libatk-bridge2.0-0 \
libgtk-3-0 \
libsecret-1-0 \
--no-install-recommends && rm -rf /var/lib/apt/lists/*
# Copy built artifacts from the builder stage
COPY --from=builder /workspace/apps/desktop/out /workspace/apps/desktop/out
WORKDIR /workspace
CMD ["/bin/bash"]