У меня есть приложение Nest. js, которое подключается к базе данных Oracle через TypeORM, и я пытаюсь поместить свое приложение в контейнер, используя Docker. Итак, проблема в том, что когда приложение не помещено в контейнер, оно работает нормально, но когда я это делаю, я получаю следующую ошибку.
[Nest] 19 - 06/16/2020, 4:00:52 AM [TypeOrmModule] Unable to connect to the database. Retrying (4)... +3003ms
Error: 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/odpi/doc/installation.html#linux for help
Node-oracledb installation instructions: https://oracle.github.io/node-oracledb/INSTALL.html
You must have 64-bit Oracle client libraries in LD_LIBRARY_PATH, or configured with ldconfig.
If you do not have Oracle Database on this computer, then install the Instant Client Basic or Basic Light package from
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
at OracleDb.createPool (/app/node_modules/oracledb/lib/oracledb.js:202:8)
at OracleDb.createPool (/app/node_modules/oracledb/lib/util.js:185:19)
Я обязательно добавил зависимости, необходимые для тонкого клиента Oracle в свой файл Docker, как показано ниже
FROM oraclelinux:7-slim
RUN yum -y install oracle-release-el7 oracle-nodejs-release-el7 && \
yum-config-manager --disable ol7_developer_EPEL --enable ol7_oracle_instantclient && \
yum -y install oracle-instantclient19.5-basiclite && \
rm -rf /var/cache/yum
FROM node:10
WORKDIR /app
COPY ./package.json ./
Я не уверен, что еще добавить сюда заставить эту работу. Я получил некоторые инструкции о том, что добавить для клиента oracle отсюда https://oracle.github.io/node-oracledb/INSTALL.html#docker