diff --git a/Dockerfile b/Dockerfile index b06031e..d489dbe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,39 +1,55 @@ -# Estágio 1: Build -FROM node:16-bullseye-slim AS builder +ARG NODE_VERSION=16.20 +ARG DEBIAN_VARIANT=bullseye + +FROM node:${NODE_VERSION}-${DEBIAN_VARIANT} AS builder WORKDIR /app -COPY package*.json ./ -RUN npm install --legacy-peer-deps -COPY . . -RUN npm run build -FROM node:16-bullseye-slim -# Instalar dependências do Oracle -RUN apt-get update && apt-get install -y \ - libaio1 \ - unzip \ - wget \ - && mkdir -p /opt/oracle +ARG INSTANTCLIENT_ZIP_URL=https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip +RUN apt-get update \ + && apt-get install -y --no-install-recommends ca-certificates wget unzip libaio1 libnsl2 \ + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /opt/oracle \ + && wget -q "${INSTANTCLIENT_ZIP_URL}" -O /opt/oracle/instantclient.zip \ + && unzip -q /opt/oracle/instantclient.zip -d /opt/oracle \ + && rm /opt/oracle/instantclient.zip \ + && rm -f /opt/oracle/instantclient_*/ojdbc*.jar \ + /opt/oracle/instantclient_*/ucp*.jar \ + /opt/oracle/instantclient_*/xstreams.jar \ + /opt/oracle/instantclient_*/adrci \ + /opt/oracle/instantclient_*/genezi \ + /opt/oracle/instantclient_*/uidrvci \ + && ln -s "$(ls -d /opt/oracle/instantclient_* | head -n 1)" /opt/oracle/instantclient -# Instalar Oracle Instant Client -RUN wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basic-linuxx64.zip -O /opt/oracle/client.zip && \ - unzip /opt/oracle/client.zip -d /opt/oracle && \ - rm /opt/oracle/client.zip && \ - ln -s /opt/oracle/instantclient_* /opt/oracle/instantclient - -# Configurar o sistema para encontrar as bibliotecas do Oracle ENV LD_LIBRARY_PATH=/opt/oracle/instantclient -RUN echo "/opt/oracle/instantclient" > /etc/ld.so.conf.d/oracle-instantclient.conf && ldconfig +ENV PATH=/opt/oracle/instantclient:$PATH + +COPY package*.json ./ +ENV NPM_CONFIG_LEGACY_PEER_DEPS=true +RUN npm ci + +COPY . . +RUN npm run build \ + && npm prune --omit=dev --legacy-peer-deps \ + && npm cache clean --force + +FROM node:${NODE_VERSION}-${DEBIAN_VARIANT}-slim AS runtime WORKDIR /app -# Copiar apenas o necessário do estágio anterior -COPY --from=builder /app/dist ./dist +ENV NODE_ENV=production +ENV LD_LIBRARY_PATH=/opt/oracle/instantclient +ENV PATH=/opt/oracle/instantclient:$PATH + +RUN apt-get update \ + && apt-get install -y --no-install-recommends libaio1 libnsl2 \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=builder /opt/oracle /opt/oracle COPY --from=builder /app/package*.json ./ COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/dist ./dist -# Variáveis de ambiente padrão para o driver oracledb -ENV OCI_LIB_DIR=/opt/oracle/instantclient -ENV OCI_INC_DIR=/opt/oracle/instantclient/sdk/include +EXPOSE 8065 -CMD ["npm", "run", "start:prod"] \ No newline at end of file +CMD ["node", "dist/main"] diff --git a/k8s/base/deployment.yaml b/k8s/base/deployment.yaml index bb8230b..70de1ba 100644 --- a/k8s/base/deployment.yaml +++ b/k8s/base/deployment.yaml @@ -15,7 +15,7 @@ spec: app: vendaweb-api spec: imagePullSecrets: - - name: harbor-secret + - name: gitea-auth containers: - name: api image: git.simplifiquehc.com.br/simplifique/vendaweb-api:latest