Entorno de Docker para DatAscend
Desarrollo de aplicaciones con Docker Compose
Sección titulada «Desarrollo de aplicaciones con Docker Compose»El archivo Docker Compose está diseñado para proporcionar un entorno de desarrollo completo para la aplicación. Incluye una base de datos PostgreSQL, un servicio para poblar la base de datos y el contenedor principal de la aplicación.
Servicios
Sección titulada «Servicios»El archivo compose define tres servicios principales:
-
Servicio de base de datos
- Imagen:
postgres:latest- Usa la última imagen de PostgreSQL de Docker Hub. - Nombre del Contenedor:
da-database- Un nombre descriptivo para el contenedor de la base de datos. - Healthcheck: Implementa una verificación de salud para asegurar que la base de datos esté completamente operativa antes de que comiencen los servicios dependientes.
- Entorno:
CONTAINER=TEST: Configura una bandera de entorno de prueba, potencialmente usada por scripts dentro del contenedor.POSTGRES_PASSWORD=postgres: Establece la contraseña de PostgreSQL apostgres. Importante: Esto es solo para propósitos de desarrollo/prueba y no debe usarse en producción.
- Puertos: Mapea el puerto
54320en el host al puerto5432dentro del contenedor. Esto permite acceder a la base de datos usandolocalhost:54320desde la máquina host.
- Imagen:
-
Servicio de poblamiento de base de datos
- Imagen:
postgres:latest- Usa la última imagen de PostgreSQL para ejecutar el script de poblamiento de la base de datos. - Nombre del Contenedor:
da-seed-database- Nombra claramente el contenedor responsable de poblar la base de datos. - Comando:
["/data/scripts/seed_db.sh", "/data/database"]- Ejecuta el scriptseed_db.shubicado en el directorio del proyecto montado. El segundo argumento/data/databasees un parámetro pasado al script, que potencialmente contiene datos o configuraciones necesarias para poblar. - Depende de:
database- Asegura que el serviciodatabaseesté saludable antes de que comiencedatabase_script, garantizando la disponibilidad de la base de datos. - Volúmenes: Monta el directorio del proyecto actual (
..) en el host dentro del directorio/datadentro del contenedor, haciendo que los scripts y datos del proyecto sean accesibles. - Entorno: Configura las variables de entorno necesarias para el acceso a la base de datos, incluidos los detalles de conexión que apuntan al servicio
databaseusando su nombre de servicio. Esto asegura que el script de poblamiento pueda conectarse correctamente a la base de datos.
- Imagen:
-
Servicio de aplicación
- Imagen:
node:16.16.0- Usa Node.js 16.16.0 para ejecutar la aplicación. - Nombre del Contenedor:
da-application- Nombra claramente el contenedor que ejecuta la aplicación principal. - Directorio de Trabajo:
/data- Establece el directorio de trabajo del contenedor en/data, que es donde está montado el código. - Comando:
/bin/bash -c "chmod +x /data/scripts/entrypoint.sh && /data/scripts/entrypoint.sh"- Ejecuta el scriptentrypoint.shdespués de establecer permisos de ejecución. Este script probablemente iniciará el proceso principal de la aplicación. - Depende de:
database: Asegura que la base de datos esté saludable antes de iniciar la aplicación.database_script: Asegura que el proceso de poblamiento de la base de datos se haya completado con éxito antes de iniciar la aplicación, previniendo problemas de inicio de aplicación relacionados con la falta de datos iniciales.
- Volúmenes:
backend_modules:/data/backend/node_modules: Define un volumen nombrado para los módulos node del backend.project:/data: Vincula el directorio del host a/datadentro del contenedor. Esto asegura que los cambios de código en el host se reflejen directamente dentro del contenedor.
- Puertos: Mapea el puerto
4000en el host al puerto4000dentro del contenedor. Esto permite acceder a la aplicación a través delocalhost:4000desde la máquina host. - Entorno: Configura variables de entorno para la aplicación, incluidos los detalles de conexión a la base de datos y la configuración de la aplicación. Este entorno hace que el contenedor sea consciente de su modo de prueba y los parámetros de conexión a la base de datos.
- Imagen:
Volúmenes
Sección titulada «Volúmenes»Los siguientes volúmenes nombrados están definidos para caché de datos y sincronización de código:
backend_modules: Un volumen nombrado usado para persistir el directorio/backend/node_modulesentre reinicios de contenedores.project: Un montaje que vincula directamente el directorio actual del proyecto en el host al directorio/datadentro de los contenedores. Esto asegura que los cambios de código estén inmediatamente disponibles dentro de los contenedores sin reconstruir la imagen.
Para iniciar la aplicación, navega al directorio que contiene este archivo docker-compose.yml y ejecuta:
docker-compose -f ./Dockerfiles/docker-compose.yml up -dNota: Cualquier variable de entorno requerida por la aplicación podría configurarse añadiéndolas a este comando, lo que permite probar fácilmente diferentes configuraciones de bases de datos, entornos, etc.