[英]npm install -g apiconnect fails in Docker container (RHEL8)
I need to build a container based on RHEL 8 and then install LoopBack and IBM ApiConnect.我需要构建一个基于 RHEL 8 的容器,然后安装 LoopBack 和 IBM ApiConnect。
docker run -it --name api-framework-rhel8 -v ~/api-framework-rhel8:/api-framework-rhel8 registry.access.redhat.com/ubi8/ubi:8.1 bash
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
yum install -y nodejs
yum install gcc-c++ make
yum install python38
yum install python27
alternatives
to map python
to python2
(or python3
) - Tried both and both failed during api-connect
install.python
到python2
(或python3
)的alternatives
- 都尝试过,但在api-connect
安装期间都失败了。alternatives --set python /usr/bin/python2
npm install -g loopback-cli
Install ApiConnect安装 ApiConnect
npm install -g --unsafe-perm=true --allow-root apiconnect
However, this fails with the error message (from the console, 2 sets):但是,这失败并显示错误消息(来自控制台,2 组):
gyp: [Errno 2] No such file or directory while executing command '['python', './generate_build_id.py']' in binding.gyp while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
gyp ERR! stack at ChildProcess.emit (events.js:315:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Linux 4.19.76-linuxkit
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/lib/node_modules/apiconnect/node_modules/appmetrics
gyp ERR! node -v v12.18.4
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok
Note that python2
and python3
are installed under /usr/bin
and accessible from the container, however, python
can not be called.注意
python2
和python3
安装在/usr/bin
下,可以从容器中访问,但是python
不能调用。
The second set of errors from the console:来自控制台的第二组错误:
Error: appmetrics@3.1.3 install: `node extract_all_binaries.js || node-gyp rebuild`
error code ELIFECYCLE
error errno 1
error appmetrics@3.1.3 install: `node extract_all_binaries.js || node-gyp rebuild`
error Exit status 1
error Failed at the appmetrics@3.1.3 install script.
error This is probably not a problem with npm. There is likely additional logging output above.
I noticed that you're using Node.js 12.x.我注意到您使用的是 Node.js 12.x。 The apiconnect toolkit only supports Node.js 10.x.
apiconnect 工具包仅支持 Node.js 10.x。
I tried most of the steps in your question, but switched to Node 10, and that seemed to resolve the issue.我尝试了您问题中的大部分步骤,但切换到 Node 10,这似乎解决了问题。
Also, be sure to install python27 and run alternatives --set python /usr/bin/python2
as you mentioned.另外,请务必安装 python27 并运行
alternatives --set python /usr/bin/python2
如您所述。
Here's the complete Dockerfile I used:这是我使用的完整 Dockerfile:
FROM registry.access.redhat.com/ubi8/ubi:8.1
RUN yum update -y && \
yum install -y python27 gcc-c++ make
RUN alternatives --set python /usr/bin/python2
RUN curl -sL https://rpm.nodesource.com/setup_10.x | bash - && \
yum install -y nodejs
RUN npm i -g --unsafe-perm=true apiconnect
CMD ["bash"]
This Node version worked for me: node-v8.8.1这个节点版本对我有用:node-v8.8.1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.