From 1f4454e78fa334affa67c211ea717711fc7f2d59 Mon Sep 17 00:00:00 2001 From: Rumazor Date: Sun, 8 Feb 2026 23:08:05 -0300 Subject: [PATCH] ejoras en el docker yaml --- backend/Dockerfile | 18 ++++-------- backend/docker-compose.test.yml | 49 +++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 backend/docker-compose.test.yml diff --git a/backend/Dockerfile b/backend/Dockerfile index e7cd323..bd56316 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -3,38 +3,30 @@ FROM node:20-alpine AS builder WORKDIR /app -# Copiar archivos de dependencias COPY package*.json ./ - -# Instalar dependencias RUN npm ci -# Copiar código fuente COPY . . - -# Build RUN npm run build +# Test stage (para CI/CD) +FROM builder AS test +CMD ["npm", "test"] + # Production stage -FROM node:20-alpine +FROM node:20-alpine AS production WORKDIR /app -# Crear usuario no-root RUN addgroup -g 1001 -S nodejs && \ adduser -S nestjs -u 1001 -# Copiar package.json COPY package*.json ./ - -# Instalar SOLO dependencias de producción RUN npm ci --only=production && \ npm cache clean --force -# Copiar build desde stage anterior COPY --from=builder /app/dist ./dist -# Cambiar a usuario no-root USER nestjs EXPOSE 3000 diff --git a/backend/docker-compose.test.yml b/backend/docker-compose.test.yml new file mode 100644 index 0000000..1f3e7a5 --- /dev/null +++ b/backend/docker-compose.test.yml @@ -0,0 +1,49 @@ +services: + nestjs-test: + build: + context: ./backend + dockerfile: Dockerfile + target: test # 🔥 Usa el stage "test" + environment: + DB_HOST: postgres + DB_PORT: "5432" + DB_NAME: "${DB_NAME}" + DB_USER: "${DB_USER}" + DB_PASSWORD: "${DB_PASSWORD}" + REDIS_HOST: redis + REDIS_PORT: "6379" + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + networks: + - my_network + + postgres: + image: postgres:14-alpine + environment: + POSTGRES_USER: "${DB_USER}" + POSTGRES_PASSWORD: "${DB_PASSWORD}" + POSTGRES_DB: "${DB_NAME}" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER"] + interval: 5s + timeout: 3s + retries: 3 + networks: + - my_network + + redis: + image: redis:7-alpine + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + timeout: 3s + retries: 3 + networks: + - my_network + +networks: + my_network: + driver: bridge