En la primera ejecución, la aplicación descarga los archivos de RUCs y equivalencias de la DNIT y construye una base de datos SQLite. Luego, levanta un servidor con una API REST para consultar los datos.
- Clona el repositorio del proyecto.
git clone https://github.com/blasferna/people.git- Navega al directorio del proyecto:
cd people- Crea y activa un entorno virtual de Python:
python -m venv env
source env/bin/activate # En Windows: env\Scripts\activate- Instala las dependencias del proyecto:
pip install -r requirements.txt- Asegúrate de tener el entorno virtual activado.
- Ejecuta el servidor web con el siguiente comando:
python manage.py runserverEl servidor estará disponible en http://127.0.0.1:3000.
Note
Si es la primera vez que ejecutas el servidor, la aplicación descargará los archivos de RUCs y equivalencias de la DNIT y construirá la base de datos SQLite. Este proceso puede tardar varios minutos.
El proyecto incluye varios comandos CLI para gestionar diferentes tareas:
python manage.py runserver: Ejecuta el servidor web.python manage.py build: Vuelve a construir la base de datos. Descarga los archivos de RUCs y equivalencias y reconstruye la base de datos SQLite.python manage.py download: Descarga bases de datos preconstruidas desde URLs especificadas en las variables de entorno (opcional).RUC_DB_URL: URL de la base de datos de RUCs preconstruida.PEOPLE_DB_URL: URL de la base de datos de personas preconstruida.
El proyecto se puede desplegar utilizando Docker. La imagen está alojada en el registro de GitHub:
docker pull ghcr.io/blasferna/people:latestEs necesario crear un volumen para almacenar los datos:
docker volume create people_dataEjecuta la imagen con el siguiente comando:
docker run --name people -p 80:80 -v people_data:/code ghcr.io/blasferna/peopleOpcionalmente puedes ejecutar los comandos CLI de la aplicación utilizando Docker. Por ejemplo, para reconstruir la base de datos:
docker run -v people_data:/code ghcr.io/blasferna/people buildTambién puedes utilizar Docker Compose para desplegar la aplicación. Asegúrate de crear un archivo docker-compose.yml con el siguiente contenido:
version: '3'
services:
app:
image: ghcr.io/blasferna/people:latest
ports:
- "80:80"
volumes:
- people_data:/code
restart: unless-stopped
volumes:
people_data:En este caso, no es necesario construir la imagen localmente, ya que se utilizará la imagen ghcr.io/blasferna/people:latest del registro de GitHub.
Para desplegar la aplicación con Docker Compose, ejecuta el siguiente comando:
docker-compose up -dEste comando descargará la imagen del registro de GitHub, creará un volumen llamado people_data para almacenar los datos persistentes, y ejecutará el contenedor en segundo plano.
La opción -d indica que el contenedor se ejecutará en segundo plano y en combinación con la opción restart: unless-stopped del archivo docker-compose.yml, el contenedor se reiniciará automáticamente si se detiene o se reinicia el sistema.
Para detener:
docker-compose stopPara detener y eliminar los contenedores:
docker-compose down -vLa opción -v eliminará el volumen people_data junto con los contenedores. Sólo ejecutar cuando se desee eliminar los datos almacenados.
curl -X 'GET' \
'http://127.0.0.1:3000/?ruc=80009735' \
-H 'accept: application/json'Respuesta:
{
"ruc": "80009735",
"razonsocial": "ADMINISTRACION NACIONAL DE ELECTRICIDAD - ANDE",
"tipo": "J",
"categoria": "GRANDE",
"dv": "1",
"estado": "ACTIVO"
}curl -X 'GET' \
'http://127.0.0.1:3000/search?query=80009735' \
-H 'accept: application/json'Respuesta:
[
{
"ruc": "80009735",
"razonsocial": "ADMINISTRACION NACIONAL DE ELECTRICIDAD - ANDE",
"tipo": "J",
"categoria": "GRANDE",
"dv": "1",
"estado": "ACTIVO"
}
]