diff --git a/infra/Dockerfile b/infra/Dockerfile new file mode 100644 index 0000000..e647f20 --- /dev/null +++ b/infra/Dockerfile @@ -0,0 +1,21 @@ +# Usa una imagen de Node.js 22 basada en Alpine +FROM node:22.10.0-alpine + +# Establece el directorio de trabajo +WORKDIR /app + +# Instala las dependencias para compilar bcrypt en Alpine +RUN apk add --no-cache python3 make g++ + +# Copia los archivos de dependencias y los instala +COPY package.json package-lock.json ./ +RUN npm install + +# Copia el resto del código fuente +COPY . . + +# Expone el puerto 3000 +EXPOSE 3051 + +# Comando por defecto para iniciar la aplicación en desarrollo +CMD ["npm", "run", "start:dev"] \ No newline at end of file diff --git a/infra/docker-compose.yml b/infra/docker-compose.yml new file mode 100644 index 0000000..9d9406b --- /dev/null +++ b/infra/docker-compose.yml @@ -0,0 +1,47 @@ +services: + database: + image: mariadb:latest + container_name: carga_db + restart: always + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: carga_test + MYSQL_USER: user + MYSQL_PASSWORD: password + ports: + - "3356:3306" + volumes: + - mariadb_data:/var/lib/mysql + - ./init.sql:/docker-entrypoint-initdb.d/init.sql + - ./init_insert_data.sql:/docker-entrypoint-initdb.d/init_insert_data.sql + + + networks: + - carga_network + + api: + + build: + context: .. + dockerfile: infra/Dockerfile + + container_name: carga_api + + restart: always + depends_on: + - database + env_file: + - ../.env + + ports: + - "3051:3051" + networks: + - carga_network + + + +volumes: + mariadb_data: + +networks: + carga_network: \ No newline at end of file