Crear Docker Compose

This commit is contained in:
Marco Gallegos
2025-08-13 17:30:49 -06:00
parent 6b39f20ade
commit b658b9fd42
2 changed files with 33 additions and 14 deletions

View File

@@ -1,25 +1,29 @@
# 1. Imagen Base: Usamos una imagen oficial de Node.js, versión 18-alpine. # 1. Imagen base: Node.js 18 en Alpine (ligera)
# 'alpine' es una versión muy ligera, ideal para producción.
FROM node:18-alpine FROM node:18-alpine
# 2. Directorio de Trabajo: Establecemos el directorio de trabajo dentro del contenedor. # 2. Variable de entorno para producción
ENV NODE_ENV=production
# 3. Directorio de trabajo
WORKDIR /app WORKDIR /app
# 3. Copiar Archivos de Dependencias: Copiamos package.json y package-lock.json. # 4. Copiar dependencias primero para aprovechar caché
# Hacemos esto en un paso separado para aprovechar el caché de Docker.
# Si no cambian estos archivos, Docker no reinstalará las dependencias.
COPY package*.json ./ COPY package*.json ./
# 4. Instalar Dependencias: Instalamos las dependencias del proyecto. # 5. Instalar dependencias de producción y limpiar caché
RUN npm install RUN npm ci --omit=dev && npm cache clean --force
# 5. Copiar el Resto de la Aplicación: Copiamos todos los demás archivos. # 6. Copiar el resto de la aplicación
# Los archivos en .dockerignore serán excluidos automáticamente.
COPY . . COPY . .
# 6. Exponer Puerto: Informamos a Docker que el contenedor escucha en el puerto 3000. # 7. Crear usuario no root y darle permisos
RUN addgroup -S app && adduser -S app -G app \
&& chown -R app:app /app
USER app
# 8. Exponer el puerto
EXPOSE 3000 EXPOSE 3000
# 7. Comando de Inicio: El comando que se ejecutará cuando el contenedor inicie. # 9. Comando de inicio
# Usamos 'npm start' que definiste en tu package.json. CMD ["npm", "start"]
CMD [ "npm", "start" ]

15
ap-pos/docker-compose.yml Normal file
View File

@@ -0,0 +1,15 @@
services:
ap-pos:
image: marcogll/ap-pos:latest
container_name: ap-pos
restart: unless-stopped
ports:
- "3000:3000"
environment:
NODE_ENV: production
volumes:
- ap_pos_data:/app/data
volumes:
ap_pos_data: