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 imagennode:lts-alpine3.20
. Monta el directorio local${PWD}/front
en el contenedor y ejecuta los comandosnpm i && npm run dev
para instalar las dependencias y ejecutar el servidor de desarrollo. Expone el puerto5173
. -
express-back
: Un servicio para el back-end de la aplicación, también utilizando la imagennode:lts-alpine3.20
. Monta el directorio local${PWD}/back
en el contenedor y ejecuta los mismos comandos para el servidor de desarrollo. Expone el puerto5000
. -
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