Docker build fails: `canvas` native compile error and Vite `yarn build` JavaScript heap OOM on `node:20-slim`
Maintainer thường phản hồi trong vòng 2 ngày
@Chenglong-MS đang làm issue này rồi.
Từ ngày 28/6/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Environment
- Command:
docker compose up --build/docker build - Base image:
node:20-slim(Dockerfilefrontend-builderstage) - Dependency:
package.jsonincludes"canvas": "^3.2.1"
Problem 1: canvas fails to compile during yarn install
Symptoms
gyp ERR! cwd /app/node_modules/canvas
gyp ERR! not ok
error Command failed with exit code 1.
Root cause
node:20-slim does not include the native build toolchain or Cairo development libraries required by the canvas npm package. Running yarn install triggers node-gyp rebuild, which fails on the slim image.
Proposed fix
Install system dependencies in the frontend-builder stage before yarn install:
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 make g++ pkg-config \
libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev librsvg2-dev \
&& rm -rf /var/lib/apt/lists/*
Problem 2: JavaScript heap OOM during yarn build
Symptoms
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
This occurs even when Docker Desktop memory is set to 12 GB or higher.
Root cause
Node.js defaults to a heap limit of roughly 2 GB, independent of the total memory allocated to Docker. Vite production builds for this project can exceed that limit.
Proposed fix
Raise the Node.js heap limit before yarn build, with an optional build-arg override:
ARG NODE_HEAP_MB=8192
ENV NODE_OPTIONS=--max-old-space-size=${NODE_HEAP_MB}
RUN yarn build
Optional in docker-compose.yml:
build:
args:
NODE_HEAP_MB: "8192"
Steps to reproduce
- Clone the repo and configure
.env - Run
docker compose up --build - Build fails at
yarn install(canvas) and/oryarn build(Vite OOM)
Expected behavior
docker compose up --build completes successfully and the service starts on port 5567.`
- Ngôn ngữ chính
- Python
- Star
- 17.7k
- Fork
- 1.7k
- Merge trung bình
- 4 ngày 1 giờ
- Pull request đã merge (30 ngày)
- 8
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Có Dockerfile hoặc tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của microsoft/data-formulator
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
microsoft/data-formulator#513 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
microsoft/data-formulator#520 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 58/100
microsoft/data-formulator#519 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Data table is emptyĐang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 50/100
microsoft/data-formulator#518 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 52/100
microsoft/data-formulator#517 ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của microsoft/data-formulator
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
navikt/tiltakspenger#129 ·
-
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 83/100
FinanceFlash/unvibecode#652 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
netbox status: needs triage type: documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
netbox-community/netbox#23655 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
MCDReforged/MCDReforged#442 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
bytedance/agentkit-samples#277 ·