diff --git a/deployment/develop/docker/Dockerfile b/deployment/develop/docker/Dockerfile index c1886ca..a3d43d2 100644 --- a/deployment/develop/docker/Dockerfile +++ b/deployment/develop/docker/Dockerfile @@ -1,10 +1,23 @@ # --- Release image --- FROM node:22-alpine AS release -ARG PORT WORKDIR /home/node/app -COPY ./dist/src ./src -COPY ./dist/package.json ./ -COPY ./dist/package-lock.json ./ -RUN npm ci -EXPOSE $PORT -ENTRYPOINT ["node", "src/apps/index.js"] + +# Copiar paquetes compilados del monorepo +COPY ./dist/packages ./packages + +# Instalar dependencias de produccion +COPY ./package.json ./ +COPY ./package-lock.json ./ +RUN npm ci --omit=dev + +# Symlinks para modulos compartidos del workspace +RUN mkdir -p packages/node_modules && \ + ln -sf ../sim-shared packages/node_modules/sim-shared && \ + ln -sf ../sim-consumidor-objenious packages/node_modules/sim-consumidor-objenious + +# Script de inicio para los 3 servicios +COPY ./entrypoint.sh ./ +RUN chmod +x entrypoint.sh + +EXPOSE ${PORT:-3000} +ENTRYPOINT ["./entrypoint.sh"] diff --git a/deployment/develop/docker/docker-compose.yaml b/deployment/develop/docker/docker-compose.yaml index d9cbe23..638a9b5 100644 --- a/deployment/develop/docker/docker-compose.yaml +++ b/deployment/develop/docker/docker-compose.yaml @@ -4,6 +4,8 @@ networks: external: true proxy: external: true + internal: + driver: bridge services: rabbitmq-sim-broker: @@ -27,6 +29,8 @@ services: - ./rabbitmq_plugins/enabled_plugins:/etc/rabbitmq/enabled_plugins:ro - ./rabbit/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro - ./rabbit/definitions.json:/etc/rabbitmq/definitions.json:ro + networks: + - internal labels: - "io.portainer.accesscontrol.teams=develop" @@ -49,8 +53,17 @@ services: networks: - savefamily - proxy + - internal expose: - ${PORT} + volumes: + - ./.env:/home/node/app/.env:ro + healthcheck: + test: ["CMD-SHELL", "wget -qO- http://localhost:${PORT:-3000}/health || exit 1"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 15s labels: - "io.portainer.accesscontrol.teams=develop" - "traefik.enable=true" @@ -82,5 +95,7 @@ services: retries: 5 start_period: 5s timeout: 5s + networks: + - internal labels: - "io.portainer.accesscontrol.teams=develop" diff --git a/deployment/develop/docker/entrypoint.sh b/deployment/develop/docker/entrypoint.sh new file mode 100644 index 0000000..eed841e --- /dev/null +++ b/deployment/develop/docker/entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +node packages/sim-objenious-cron/index.js & +node packages/sim-consumidor-objenious/index.js & +exec node packages/sim-entrada-eventos/index.js diff --git a/deployment/develop/jenkinsfile.groovy b/deployment/develop/jenkinsfile.groovy index 43d06b5..6027aba 100644 --- a/deployment/develop/jenkinsfile.groovy +++ b/deployment/develop/jenkinsfile.groovy @@ -16,7 +16,7 @@ pipeline { steps { sh 'npm install -g yarn' sh 'corepack enable' - sh 'corepack prepare yarn@3.2.1 --activate' + sh 'corepack prepare yarn@4.12.0 --activate' sh 'yarn install --immutable' } } @@ -46,7 +46,7 @@ pipeline { remoteDirectory: "$APP_REMOTE_PATH", sourceFiles: "dist/**/*", excludes: "dist/**/node_modules/**" - ), + ), sshTransfer( cleanRemote: false, remoteDirectory: "$APP_REMOTE_PATH", @@ -70,12 +70,6 @@ pipeline { sourceFiles: "deployment/develop/docker/**/*", removePrefix: "deployment/develop/docker", ), - sshTransfer( - cleanRemote: false, - remoteDirectory: "$APP_REMOTE_PATH", - sourceFiles: "deployment/Dockerfile", - removePrefix: "deployment", - ), sshTransfer( cleanRemote: false, remoteDirectory: "$APP_REMOTE_PATH",