From 8fb964eac089d482c8fab79a843dee69642bdd2a Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 13 Dec 2025 21:40:23 +0000 Subject: [PATCH] feat(infra): add Docker setup for backend service This commit introduces the initial infrastructure for the HR platform, as defined by the responsibilities of Agent 1. It includes: - A `Dockerfile` for building the Node.js application container. - A `docker-compose.yml` file to orchestrate the `api` and `db` services. - An `.env.example` file to define the required environment variables. - A `.gitignore` file to exclude unnecessary files from version control. - A log file in `docs/agents/agent-01-infraestructura.md` to document the changes. --- .env.example | 9 +++ .gitignore | 74 +++++++++++++++++++++++++ Dockerfile | 21 +++++++ docker-compose.yml | 34 ++++++++++++ docs/agents/agent-01-infraestructura.md | 25 +++++---- 5 files changed, 151 insertions(+), 12 deletions(-) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..d802c4a --- /dev/null +++ b/.env.example @@ -0,0 +1,9 @@ +# Application configuration +NODE_ENV=development + +# Database configuration +DB_HOST=db +DB_USER=postgres +DB_PASSWORD=secret +DB_NAME=hr_platform +DB_PORT=5432 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c85fe15 --- /dev/null +++ b/.gitignore @@ -0,0 +1,74 @@ +# Dependencies +/node_modules + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-temporary-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test +.env.production + +# Mac files +.DS_Store + +# VSCode files +.vscode/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3c7d009 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# Usar una imagen base oficial de Node.js +ARG NODE_VERSION=18 +FROM node:${NODE_VERSION}-alpine + +# Establecer el directorio de trabajo en el contenedor +WORKDIR /usr/src/app + +# Copiar package.json y package-lock.json (si existe) +COPY package*.json ./ + +# Instalar las dependencias del proyecto +RUN npm install + +# Copiar el resto del código de la aplicación +COPY . . + +# Exponer el puerto en el que la aplicación se ejecutará +EXPOSE 3011 + +# Comando para iniciar la aplicación +CMD [ "node", "src/index.js" ] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..757a83a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,34 @@ +version: '3.8' + +services: + api: + build: . + ports: + - "3011:3011" + volumes: + - .:/usr/src/app + networks: + - app-network + env_file: + - .env + + db: + image: postgres:13 + restart: always + environment: + POSTGRES_USER: ${DB_USER} + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_DB: ${DB_NAME} + ports: + - "5432:5432" + volumes: + - postgres-data:/var/lib/postgresql/data + networks: + - app-network + +networks: + app-network: + driver: bridge + +volumes: + postgres-data: diff --git a/docs/agents/agent-01-infraestructura.md b/docs/agents/agent-01-infraestructura.md index 3578677..ceb84ee 100644 --- a/docs/agents/agent-01-infraestructura.md +++ b/docs/agents/agent-01-infraestructura.md @@ -1,18 +1,19 @@ # Bitácora del Agente 1 – Infraestructura & DevOps -Este documento registra las decisiones, cambios y observaciones del **Agente 1**. +## Fecha: 2023-10-27 -Su propósito es mantener un historial claro y auditable de las tareas y soluciones implementadas. +### Cambios Realizados ---- +* **Creación de `Dockerfile`:** + * Se ha añadido un `Dockerfile` para construir la imagen del servicio de Node.js. + * La imagen se basa in `node:18-alpine` para mantenerla ligera. + * Se exponen el puerto 3011 y se define el comando de inicio `node src/index.js`. -## Entradas de Bitácora +* **Creación de `docker-compose.yml`:** + * Se ha creado un archivo `docker-compose.yml` para orquestar los servicios de la aplicación. + * Define dos servicios: `api` (el backend de Node.js) y `db` (una base de datos PostgreSQL). + * Configura una red `app-network` para la comunicación entre servicios. + * Se define un volumen `postgres-data` para la persistencia de los datos de la base de datos. -### [Fecha] - Tarea/Decisión - -* **Contexto:** [Descripción del requerimiento o problema] -* **Acción/Implementación:** [Qué se hizo o cómo se implementó] -* **Resultado:** [Cuál fue el resultado, ej. endpoint creado, test pasado] -* **Observaciones:** [Notas adicionales, dependencias, problemas encontrados] - ---- +* **Creación de `.env.example`:** + * Se ha añadido un archivo `.env.example` con las variables de entorno necesarias para la configuración de la base de datos y la aplicación.