Skip to main content

Docker Compose

¿Qué es Docker Compose?

Docker Compose es una herramienta que permite definir y gestionar aplicaciones Docker de manera más sencilla y organizada. Con Compose, puedes definir los servicios, redes y volúmenes de tu aplicación en un archivo YAML, lo que facilita la configuración y el despliegue de entornos complejos.

Estructura del Archivo Docker Compose

Un archivo Docker Compose sigue una estructura específica que organiza y configura los distintos componentes de tu aplicación. Aquí hay una descripción detallada de la estructura y los elementos clave:

version: "3"

services:
vite-front:
container_name: front
image: node:lts-alpine3.20
working_dir: /app
volumes:
- "${PWD}/front:/app"
command: sh -c "npm i && npm run dev"
ports:
- "5173:5173"
restart: always

express-back:
container_name: back
image: node:lts-alpine3.20
working_dir: /app
volumes:
- "${PWD}/back:/app"
command: sh -c "npm i && npm run dev"
ports:
- "5000:5000"
restart: always

db:
container_name: mongo_db
image: mongo
restart: always
volumes:
- "${PWD}/mongo:/data/db"
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
command: ["--auth"]

redis:
image: redis
restart: always
volumes:
- "${PWD}/redis:/data"

Archivo .env

MONGO_USERNAME=root
MONGO_PASSWORD=123456

Este archivo contiene las variables de entorno necesarias para la autenticación en MongoDB dentro de tu aplicación Docker Compose. Al utilizar ${MONGO_USERNAME} y ${MONGO_PASSWORD} en tu archivo Docker Compose, estarás referenciando estas variables de entorno para asegurar la configuración segura de tu base de datos.

¿Qué hace este archivo Docker Compose?

Este archivo Docker Compose define la configuración de una aplicación compuesta por varios servicios:

  • vite-front: Un servicio para el front-end de la aplicación, utilizando la imagen node:lts-alpine3.20. Monta el directorio local ${PWD}/front en el contenedor y ejecuta los comandos npm i && npm run dev para instalar las dependencias y ejecutar el servidor de desarrollo. Expone el puerto 5173.

  • express-back: Un servicio para el back-end de la aplicación, también utilizando la imagen node:lts-alpine3.20. Monta el directorio local ${PWD}/back en el contenedor y ejecuta los mismos comandos para el servidor de desarrollo. Expone el puerto 5000.

  • db: Un servicio para la base de datos MongoDB, utilizando la imagen oficial de MongoDB. Monta el directorio local ${PWD}/mongo en el contenedor para persistir los datos de la base de datos. Define variables de entorno para el nombre de usuario y contraseña de MongoDB, y ejecuta el contenedor con autenticación.

  • redis: Un servicio para la base de datos en memoria Redis, utilizando la imagen oficial de Redis. No requiere configuración adicional en este archivo.

Este archivo Docker Compose simplifica la configuración y el despliegue de la aplicación, permitiendo ejecutar todos los servicios necesarios con una sola instrucción, lo que facilita el desarrollo y la gestión de entornos complejos. Las variables de entorno en el archivo .env garantizan la seguridad al configurar credenciales sensibles como el nombre de usuario y la contraseña de MongoDB.

Ejemplo

El proyecto esta en github