From 13963775d7c2c5e88a2b7f893f7c664f708515da Mon Sep 17 00:00:00 2001 From: yangdx Date: Tue, 14 Oct 2025 15:02:58 +0800 Subject: [PATCH] Optimize Docker build with multi-stage frontend compilation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Add frontend build stage to Dockerfile • Remove --production flag from bun install • Fix frontend asset integration (cherry picked from commit e5cbc593f44ccc790940f072a74fd91c5c83debc) --- .github/workflows/pypi-publish.yml | 23 +++++++++++++++++++++++ Dockerfile | 20 ++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index 37ded67e..14c2bcc5 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -17,6 +17,29 @@ jobs: with: fetch-depth: 0 # Fetch all history for tags + # Build frontend WebUI + - name: Setup Bun + uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + + - name: Build Frontend WebUI + run: | + cd lightrag_webui + bun install --frozen-lockfile + bun run build + cd .. + + - name: Verify Frontend Build + run: | + if [ ! -f "lightrag/api/webui/index.html" ]; then + echo "❌ Error: Frontend build failed - index.html not found" + exit 1 + fi + echo "✅ Frontend build verified" + echo "Frontend files:" + ls -lh lightrag/api/webui/ | head -10 + - uses: actions/setup-python@v5 with: python-version: "3.x" diff --git a/Dockerfile b/Dockerfile index e9ead091..630e6a3e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,17 @@ -# Build stage +# Frontend build stage +FROM oven/bun:1 AS frontend-builder + +WORKDIR /app + +# Copy frontend source code +COPY lightrag_webui/ ./lightrag_webui/ + +# Build frontend +RUN cd lightrag_webui && \ + bun install --frozen-lockfile && \ + bun run build + +# Python build stage FROM python:3.12-slim AS builder WORKDIR /app @@ -20,6 +33,9 @@ COPY pyproject.toml . COPY setup.py . COPY lightrag/ ./lightrag/ +# Copy frontend build output from frontend-builder stage +COPY --from=frontend-builder /app/lightrag/api/webui ./lightrag/api/webui + # Install dependencies ENV PATH="/root/.cargo/bin:${PATH}" RUN pip install --user --no-cache-dir --use-pep517 . @@ -47,7 +63,7 @@ RUN pip install --upgrade pip setuptools wheel # Copy only necessary files from builder COPY --from=builder /root/.local /root/.local -COPY ./lightrag ./lightrag +COPY --from=builder /app/lightrag ./lightrag COPY setup.py . COPY docker-entrypoint.sh /app/docker-entrypoint.sh