Home > Software engineering >  Docker return error DPI-1047: cannot locate a 64-bit Oracle library: libclntsh.so. Node.js Windows 1
Docker return error DPI-1047: cannot locate a 64-bit Oracle library: libclntsh.so. Node.js Windows 1

Time:11-29

I'm using in docker container on windows 10 with nodejs. When I try to get data from oracle database - get request (the connection to data base in nodejs code) I get the message: enter image description here

DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/node-oracledb/INSTALL.html for help

When I make a get request without the container(run server) the data was return well.

Dockerfile:

FROM node:latest
WORKDIR /app
COPY package*.json app.js ./
RUN npm install
COPY . .
EXPOSE 9000
CMD ["npm", "start"]

connection to oracle:

async function send2db(sql_command, res) {
  console.log("IN");
  console.log(sql_command);
  try {
    await oracledb.createPool({
      user: dbConfig.user,
      password: dbConfig.password,
      connectString: dbConfig.connectString,
    });
    console.log("Connection pool started");
    const result = await executeSQLCommand(sql_command
      // { outFormat: oracledb.OUT_FORMAT_OBJECT }
    );

    return result;
  } catch (err) {
    // console.log("init() error: "   err.message);
    throw err;
  }
}

CodePudding user response:

From Docker for Oracle Database Applications in Node.js and Python here is one solution:

FROM node:12-buster-slim

WORKDIR /opt/oracle

RUN apt-get update && \
    apt-get install -y libaio1 unzip wget
RUN wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip && \
    unzip instantclient-basiclite-linuxx64.zip && \
    rm -f instantclient-basiclite-linuxx64.zip && \
    cd instantclient* && \
    rm -f *jdbc* *occi* *mysql* *jar uidrvci genezi adrci && \
    echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf && \
    ldconfig

You would want to use a later Node.js version now. The referenced link shows installs on other platforms too.

  • Related