Получив ошибку grp c на Fabri c 2.0, контейнер не может увидеть grpc_node.node, расположенный в папке musl в коробке, в которой нет интернета - PullRequest
0 голосов
/ 10 марта 2020

Я работаю над коробкой, у которой нет inte rnet. Успешно сделал ./byfn.sh и ./startFabric.sh в fabcar после того, как ftp вставил в него все необходимые docker изображения, go файлы и c. Однако я сталкиваюсь с проблемой при выполнении машинного ввода ./startFabric.sh с начальной ошибкой, как показано ниже

Ошибка

/ chaincode /output/node_modules/grpc/src/node/extension_binary/node-v72-linux-x64-musl/grpc_node.node "(не найдено)

Установка npm и npm выполнить сборку успешно выполнить без ошибок в / chanicode / fabcar / typescript и файл grpc_node.node находится в правильном каталоге в node_modules.Так что, похоже, что контейнер не находит его. Он отсутствует в / var / lib / docker / overlay / xxxxxxxxxxxxxx / chaincode / ouptut / node_modules / grpc / src / node / extension_binary / node-v72- linux -x64-musl.

Пожалуйста, помогите.

Когда Я запускаю команду npm rebuild в соответствии с инструкцией от murgatroid99. У меня получился следующий успешный вывод "[grpc] Success:" /home/mp70332/fab2.0/fabric-samples-master/chaincode/fabcar/typescript / node_modules / КПГР / SRC / узел / extension_binary / узел-v72- linux - x64-musl / grpc_node.node "устанавливается через удаленный" Однако, когда я запускаю "./startFabric.sh машинопись" в fabcar с в fabri c 2.0 Я получаю следующую ошибку

grpc@1.24.2 install /chaincode/output/node_modules/grpc
node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp info it worked if it ends with ok
node-pre-gyp info using node-pre-gyp@0.14.0
node-pre-gyp info using node@12.9.1 | linux | x64
node-pre-gyp WARN Using needle for node-pre-gyp https download 
node-pre-gyp info check checked for "/chaincode/output/node_modules/grpc/src/node/extension_binary/node-v72-linux-x64-musl/grpc_node.node" (not found)
node-pre-gyp http GET https://node-precompiled-binaries.grpc.io/grpc/v1.24.2/node-v72-linux-x64-musl.tar.gz
node-pre-gyp WARN Pre-built binaries not installable for grpc@1.24.2 and node@12.9.1 (node-v72 ABI, musl) (falling back to source compile with node-gyp) 
node-pre-gyp WARN Hit error getaddrinfo ENOTFOUND node-precompiled-binaries.grpc.io 
gyp info it worked if it ends with ok
gyp info using node-gyp@5.0.3
gyp info using node@12.9.1 | linux | x64
gyp info ok 
gyp info it worked if it ends with ok
gyp info using node-gyp@5.0.3
gyp info using node@12.9.1 | linux | x64
gyp info find Python using Python version 2.7.16 found at "/usr/bin/python"
gyp http GET https://nodejs.org/download/release/v12.9.1/node-v12.9.1-headers.tar.gz
gyp WARN install got an error, rolling back install
gyp ERR! configure error 
gyp ERR! stack Error: This is most likely not a problem with node-gyp or the package itself and
gyp ERR! stack is related to network connectivity. In most cases you are behind a proxy or have bad 
gyp ERR! stack network settings.
gyp ERR! stack     at Request.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/install.js:170:21)
gyp ERR! stack     at Request.emit (events.js:209:13)
gyp ERR! stack     at Request.onRequestError (/usr/local/lib/node_modules/npm/node_modules/request/request.js:881:8)
gyp ERR! stack     at ClientRequest.emit (events.js:209:13)
gyp ERR! stack     at TLSSocket.socketErrorListener (_http_client.js:406:9)
gyp ERR! stack     at TLSSocket.emit (events.js:209:13)
gyp ERR! stack     at emitErrorNT (internal/streams/destroy.js:91:8)
gyp ERR! stack     at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
gyp ERR! stack     at processTicksAndRejections (internal/process/task_queues.js:77:11)
gyp ERR! System Linux 3.10.0-1062.9.1.el7.x86_64
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--library=static_library" "--module=/chaincode/output/node_modules/grpc/src/node/extension_binary/node-v72-linux-x64-musl/grpc_node.node" "--module_name=grpc_node" "--module_path=/chaincode/output/node_modules/grpc/src/node/extension_binary/node-v72-linux-x64-musl" "--napi_version=4" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v72"
gyp ERR! cwd /chaincode/output/node_modules/grpc
gyp ERR! node -v v12.9.1
gyp ERR! node-gyp -v v5.0.3
gyp ERR! not ok 
node-pre-gyp ERR! build error 
node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --library=static_library --module=/chaincode/output/node_modules/grpc/src/node/extension_binary/node-v72-linux-x64-musl/grpc_node.node --module_name=grpc_node --module_path=/chaincode/output/node_modules/grpc/src/node/extension_binary/node-v72-linux-x64-musl --napi_version=4 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v72' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/chaincode/output/node_modules/grpc/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:209:13)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
node-pre-gyp ERR! System Linux 3.10.0-1062.9.1.el7.x86_64
node-pre-gyp ERR! command "/usr/local/bin/node" "/chaincode/output/node_modules/grpc/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--library=static_library"
node-pre-gyp ERR! cwd /chaincode/output/node_modules/grpc
node-pre-gyp ERR! node -v v12.9.1
node-pre-gyp ERR! node-pre-gyp -v v0.14.0
node-pre-gyp ERR! not ok 
Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --library=static_library --module=/chaincode/output/node_modules/grpc/src/node/extension_binary/node-v72-linux-x64-musl/grpc_node.node --module_name=grpc_node --module_path=/chaincode/output/node_modules/grpc/src/node/extension_binary/node-v72-linux-x64-musl --napi_version=4 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v72' (1)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! grpc@1.24.2 install: `node-pre-gyp install --fallback-to-build --library=static_library`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the grpc@1.24.2 install script.

Наши боксы подключаются к артефакту, который настроен в .npmr c и не имеет доступа к inte rnet. Артефактория имеет узел-v72- linux -x64-musl.tar.gz внутри grpc / v1.24.2

1 Ответ

1 голос
/ 12 марта 2020

Когда вы упаковываете код цепи Node, он не будет включать папку node_modules. Когда одноранговый узел создает код цепочки узлов, он использует контейнер построителя (nodeenv) и, по существу, запускает npm install.

. Пакет grpc использует собственный модуль и по умолчанию пытается извлечь предварительно собранный двоичный файл. Если он не может этого сделать, он попытается собрать собственный код из исходного кода. Ошибка, которую вы видите, состоит из двух частей:

  1. Невозможно загрузить готовый двоичный файл
  2. Невозможно загрузить Node.js заголовки, необходимые для сборки из источника

Мы посмотрим, сможем ли мы включить заголовки в изображение nodeenv, но в то же время можно загрузить предварительно собранные двоичные файлы из вашего собственного зеркала.

Я предполагаю, что вы на самом деле размещаете другое необходимое Узловые модули в Artifactory также?

Вам нужно будет разместить готовый двоичный файл на внутреннем сервере, доступном из контейнера. Артефактория должна работать для этого. Вам нужно будет разместить node-v72-linux-x64-musl.tar.gz на своем внутреннем сервере, и он должен быть доступен по адресу https://your_internal_server/grpc/v1.24.2/node-v72-linux-x64-musl.tar.gz.

. В вашем файле .npmrc вам необходимо добавить строку

grpc_node_binary_host_mirror=https://your_internal_server

, и тогда процесс установки должен загрузить его оттуда, а не пытаться получить его из publi c inte rnet.

...