Este repositorio contiene una plataforma completa para el análisis y visualización de datos geoespaciales, construida sobre una arquitectura de microservicios orquestada con Docker Compose. El proyecto está diseñado para ser modular, robusto y escalable.
El corazón del proyecto es el gis-engine, un entorno de procesamiento de Big Data con Apache Spark y Apache Sedona, complementado por servicios de base de datos, API y un portal web con GeoDjango.
La plataforma se divide en dos stacks que se comunican a través de una red compartida.
Este stack constituye el backend de almacenamiento y análisis de Big Data.
| Servicio | Descripción |
|---|---|
postgis |
Base de datos PostgreSQL 16 con la extensión PostGIS 3.4, optimizada para consultas y almacenamiento de datos espaciales. |
gis-engine |
Motor de procesamiento principal. Entorno Ubuntu 24.04 con Apache Spark 4.0.1, Apache Sedona 1.8.0 y Python 3.12. |
Este stack expone los datos y la lógica de negocio.
| Servicio | Descripción |
|---|---|
django-web |
Portal Web principal (GeoDjango). Montado en /app con estructura profesional (apps/). |
api-fastapi |
API REST (FastAPI). Montado en /app con estructura modular (app/routers, app/models). |
geoserver |
Servidor de mapas estándar (OGC WMS/WFS). |
edge-proxy |
Proxy Inverso (Nginx). Punto de entrada único (puerto 80) que redirige tráfico a los contenedores. |
Para un desarrollo ordenado, se recomienda tener el código fuente de las aplicaciones fuera de la carpeta de Docker.
/home/usuario/
├── docker_data/ # Este repositorio (configuraciones Docker)
├── api_fastapi/ # Código fuente de la API
├── django_web/ # Código fuente del Portal
└── edge-proxy/ # Configuración de Nginx
-
Clonar el repositorio:
git clone <URL_DEL_REPOSITORIO> docker_data cd docker_data
-
Configurar las variables de entorno: Copia el archivo de ejemplo y edítalo con tus rutas absolutas.
cp .env_example .env
Ejemplo de
.env:FASTAPI_PATH=/home/usuario/api_fastapi DJANGO_PATH=/home/usuario/django_web # ...
-
Crear carpetas de código (si no existen): Asegúrate de que las carpetas apuntadas en el
.envexistan.mkdir -p ~/api_fastapi ~/django_web ~/edge-proxy/nginx.conf
-
Levantar la Capa de Datos (PostGIS + Spark):
docker compose up -d
-
Levantar la Capa de Aplicación (Portal + API + Proxy):
docker compose -f docker-compose.portal.yml up -d
Nota: Si es la primera vez, añade
--buildal final para construir las imágenes.
-
Reconstruir contenedores tras cambios en dependencias:
docker compose -f docker-compose.portal.yml up -d --build --force-recreate
-
Ver logs en tiempo real:
docker compose -f docker-compose.portal.yml logs -f --tail=100
| Servicio | URL Local | Descripción |
|---|---|---|
| Portal Web | http://localhost/ | Home de Django |
| API Docs | http://localhost/api/docs | Swagger UI de FastAPI |
| GeoServer | http://localhost/geoserver/ | Admin: admin / geoserver |
| Salud API | http://localhost/api/health | JSON Health Check |