这是我的docker映像
FROM节点:8-高山
添加oracle-instantclient * .rpm / tmp /
复制。 / app
WORKDIR / app
运行npm install --production --no-optional
ENV LD_LIBRARY_PATH = / usr / lib / oracle / 12.2 / client64 / lib /
CMD [“ node”,“。”]
我遇到错误
1540183793466注册的插件:@ axway / api-builder-plugin-fn-swagger 无法加载连接器子目录模块;跳过它: 错误:NJS-045:无法为Node.js 8.11.2(Linux,x64)加载oracledb附加二进制文件
Node.js require()错误为:
DPI-1047:无法加载64位Oracle Client库:“加载共享库libclntsh.so时出错:没有这样的文件或目录”。请参阅https://oracle.github.io/odpi/doc/installation.html#linux以获得帮助 Node.js require()映射到/app/node_modules/@axway/api-builder-plugin-dc-oracle/node_modules/oracledb/build/Release/oracledb.node Node-oracledb安装说明:https://oracle.github.io/node-oracledb/INSTALL.html 您必须在LD_LIBRARY_PATH中具有64位Oracle客户端库,或使用ldconfig对其进行配置。 如果此计算机上没有Oracle数据库,则从以下位置安装Instant Client Basic或Basic Light软件包: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 在对象。 (/app/node_modules/@axway/api-builder-plugin-dc-oracle/node_modules/oracledb/lib/oracledb.js:65:13)
在Module._compile(module.js:652:30)
在Object.Module._extensions..js(module.js:663:10)
在Module.load(module.js:565:32)
在tryModuleLoad(module.js:505:12)
在Function.Module._load(module.js:497:3)
在Module.require(module.js:596:17)
在要求时(internal / module.js:11:18)
在对象。 (/app/node_modules/@axway/api-builder-plugin-dc-oracle/node_modules/oracledb/index.js:1:80)
在Module._compile(module.js:652:30)
无法加载连接器子目录模块;跳过它:
答案 0 :(得分:0)
在映像中添加.rpm
不足以安装Oracle客户端。
您需要通过软件包管理器进行安装。
这可能并不容易,因为您使用的是node:8- alpine 作为基本映像。 我建议使用普通节点映像并像在映像中那样安装Oracle InstantClient:
FROM node:8
ADD oracle-instantclient*.rpm /tmp/
RUN yum -y install /tmp/oracle-instantclient*.rpm && \
rm -rf /var/cache/yum && \
rm -f /tmp/oracle-instantclient*.rpm && \
echo /usr/lib/oracle/12.2/client64/lib > /etc/ld.so.conf.d/oracle-instantclient12.2.conf && \
ldconfig
ENV PATH=$PATH:/usr/lib/oracle/12.2/client64/bin
COPY . /app
WORKDIR /app
RUN npm install --production --no-optional
CMD ["node", "."]
作为参考,请检查here