FROM node:17.1-alpine

RUN apk --no-cache add libaio libnsl libc6-compat curl \
    && cd /tmp \
    && wget -O client.zip "https://download.oracle.com/otn_software/linux/instantclient/185000/instantclient-basic-linux.x64-18.5.0.0.0dbru.zip" \
    && unzip client.zip \
    && rm -rf client* \
    && mv instantclient* /usr/lib/instantclient \
    && ln -s /usr/lib/instantclient/libclntsh.so.21.1 /usr/lib/libclntsh.so \
    && ln -s /usr/lib/instantclient/libocci.so.21.1 /usr/lib/libocci.so \
    && ln -s /usr/lib/instantclient/libociicus.so /usr/lib/libociicus.so \
    && ln -s /usr/lib/instantclient/libnnz21.so /usr/lib/libnnz21.so \
    && ln -s /usr/lib/libnsl.so.2 /usr/lib/libnsl.so.1 \
    && ln -s /lib/libc.so.6 /usr/lib/libresolv.so.2 \
    && ln -s /lib64/ld-linux-x86-64.so.2 /usr/lib/ld-linux-x86-64.so.2

COPY . /usr/src/app

WORKDIR /usr/src/app

RUN npm install pm2 -g && \
    npm install && \
    npm run build

ENV LD_LIBRARY_PATH=/usr/lib/instantclient
CMD ["pm2-runtime", "dist/main.js"]
