Docker build fails: `canvas` native compile error and Vite `yarn build` JavaScript heap OOM on `node:20-slim`
I maintainer di solito rispondono entro 2 giorni
@Chenglong-MS ci sta già lavorando.
Dal 28/6/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
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.`
- Lingua principale
- Python
- Stelle
- 17.7k
- Fork
- 1.7k
- Merge medio
- 4g 1h
- PR unite (30g)
- 8
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/data-formulator
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
microsoft/data-formulator#513 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
microsoft/data-formulator#520 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
microsoft/data-formulator#519 ·
I maintainer di solito rispondono entro 2 giorni
-
Data table is emptyAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 50/100
microsoft/data-formulator#518 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
microsoft/data-formulator#517 ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di microsoft/data-formulator
Issue simili
-
cli good first issue help wanted python up-for-grabs
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
andrewsiah/agentswarm-data-tasks#36 ·
I maintainer di solito rispondono entro 1 giorno
-
bug drawing-tools
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
cofade/open-garden-planner#827 ·
I maintainer di solito rispondono entro 1 giorno
-
Methodology pageApertadocumentation site texts
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
Krasnopjorovs/temet#66 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno