【发布时间】:2019-11-27 00:26:21
【问题描述】:
我正在尝试在 docker 内的 Alpine 上安装节点画布 (https://github.com/Automattic/node-canvas)。
这些是我的 Dockerfile 的(部分):
# Use node/alpine image for final build
FROM keymetrics/pm2:latest-alpine as app
# install dependencies for canvas
RUN apk --no-cache --virtual .build-deps add \
python \
make \
g++ \
gcc \
&& apk --no-cache --virtual .canvas-build-deps add \
build-base \
cairo-dev \
jpeg-dev \
pango-dev \
giflib-dev \
pixman-dev \
pangomm-dev \
libjpeg-turbo-dev \
freetype-dev \
&& apk --no-cache add \
pixman \
cairo \
pango \
giflib
RUN apk add --update --repository http://dl-3.alpinelinux.org/alpine/edge/testing libmount ttf-dejavu ttf-droid ttf-freefont ttf-liberation ttf-ubuntu-font-family fontconfig
# Install dependencies
RUN npm install --prod
RUN npm rebuild canvas --build-from-source
当我尝试启动我的 docker 容器时,出现以下错误:
Error: Error relocating /var/www/app/node_modules/canvas/build/Release/canvas.node: FcConfigGetCurrent: symbol not found
at Object.Module._extensions..node (internal/modules/cjs/loader.js:775:18)
at Module.load (internal/modules/cjs/loader.js:626:32)
at tryModuleLoad (internal/modules/cjs/loader.js:566:12)
at Function.Module._load (internal/modules/cjs/loader.js:558:3)
at Module.require (internal/modules/cjs/loader.js:663:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/var/www/app/node_modules/canvas/lib/bindings.js:3:18)
at Module._compile (internal/modules/cjs/loader.js:734:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:745:10)
at Module.load (internal/modules/cjs/loader.js:626:32)
at tryModuleLoad (internal/modules/cjs/loader.js:566:12)
at Function.Module._load (internal/modules/cjs/loader.js:558:3)
at Module.require (internal/modules/cjs/loader.js:663:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/var/www/app/node_modules/canvas/lib/canvas.js:9:18)
at Module._compile (internal/modules/cjs/loader.js:734:30)
我猜这与 Alpine 使用 musl 而不是 glibc 的事实有关,但我认为从源代码 npm rebuild canvas --build-from-source 重建画布就足够了。
我已经尝试了来自https://github.com/Automattic/node-canvas/issues 的大多数建议,但没有一个对我有用。
有什么建议吗?
【问题讨论】:
标签: docker alpine node-canvas