diff --git a/infra/Dockerfile b/infra/Dockerfile index e647f20..cd0e134 100644 --- a/infra/Dockerfile +++ b/infra/Dockerfile @@ -1,21 +1,30 @@ -# Usa una imagen de Node.js 22 basada en Alpine +# Usa una imagen base liviana de Node.js FROM node:22.10.0-alpine -# Establece el directorio de trabajo +# Crea un usuario no root para mayor seguridad +RUN adduser -D appuser + +# Establece directorio de trabajo WORKDIR /app -# Instala las dependencias para compilar bcrypt en Alpine -RUN apk add --no-cache python3 make g++ +# Instala herramientas para compilar dependencias nativas +RUN apk add --no-cache python3 make g++ -# Copia los archivos de dependencias y los instala -COPY package.json package-lock.json ./ +# Copia e instala dependencias +COPY package*.json ./ RUN npm install -# Copia el resto del código fuente +# Copia el resto del proyecto COPY . . -# Expone el puerto 3000 +# Da permisos a todo el proyecto a appuser +RUN chown -R appuser:appuser /app + +# Cambia a ese usuario +USER appuser + +# Expone el puerto EXPOSE 3051 -# Comando por defecto para iniciar la aplicación en desarrollo -CMD ["npm", "run", "start:dev"] \ No newline at end of file +# Comando para desarrollo +CMD ["npm", "run", "start:dev"] diff --git a/infra/docker-compose.yml b/infra/docker-compose.yml index 098ba99..083ccc6 100644 --- a/infra/docker-compose.yml +++ b/infra/docker-compose.yml @@ -1,45 +1,17 @@ +version: '3.9' + services: database: image: mariadb:latest container_name: carga_db restart: always - environment: - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: carga_test + env_file: + - ../.env ports: - - "3356:3306" + - "${DB_PORT}: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