基于节点的Docker映像中缺少Oracle客户端库

时间:2018-10-25 04:44:51

标签: docker

这是我的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)
  无法加载连接器子目录模块;跳过它:

1 个答案:

答案 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