Не удалось построить node-re2 на узле: 12.18.1-alpine docker image - PullRequest
1 голос
/ 20 июня 2020

Я пытаюсь собрать node-re2 на последней версии node 12.18.1 lts alpine, чтобы потом я мог скопировать двоичный файл в продуктивный образ. К сожалению, он не компилируется. Что мне не хватает? Установка libc6-compat или gcompat с RUN apk add --no-cache gcompat или RUN apk add --no-cache libc6-compat не помогает, хотя файл ld- linux -x86-64.so.2 должен быть в пакете.

Мой файл dockerfile

FROM node:12.18.1-alpine as re2-builder

WORKDIR /opt

RUN apk add python make g++ \
    && npm install re2@1.15.0

При постройке получаю:

Writing to build/Release/re2.node ...

> re2@1.15.0 verify-build /opt/node_modules/re2
> node scripts/verify-build.js

internal/modules/cjs/loader.js:1188
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /opt/node_modules/re2/build/Release/re2.node)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:1188:18)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    at Module.require (internal/modules/cjs/loader.js:1026:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/opt/node_modules/re2/re2.js:3:13)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! re2@1.15.0 verify-build: `node scripts/verify-build.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the re2@1.15.0 verify-build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-06-19T21_07_53_335Z-debug.log
Building locally ...

> re2@1.15.0 rebuild /opt/node_modules/re2
> node-gyp rebuild
...

1 Ответ

1 голос
/ 23 июня 2020

Alpine использует musl lib c, а имя его загрузчика разделяемой библиотеки - ld-musl-x86_64.so.1, который находится в каталоге /lib. ld-linux-x86-64.so.2 - это загрузчик разделяемых библиотек glib c, который используется в Ubuntu или других стандартных дистрибутивах. Существует имя пакета уровня совместимости libc6-compat попробуйте добавить это.

apk add libc6-compat

Или попробуйте создать символическую ссылку на исходный файл

ln -s /lib/ld-musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2 

Это должно решить.

Error loading shared library ld-linux-x86-64.so.2: No such file or directory
...