- Manual de Uso para Despliegue del challenge ganador
Esta solución ha sido construida utilizando varias tecnologías robustas y confiables:
- Base de Datos: PostgreSQL 15, basada en Debian Bullseye.
- Backend: FastAPI con Uvicorn, utilizando la imagen Python 3.11:slim-bookworm.
- API/Frontend: Streamlit, también utilizando la imagen Python 3.11:slim-bookworm.
Las imágenes de Docker utilizadas en este proyecto fueron seleccionadas siguiendo los siguientes criterios:
- Certificación "Docker Official Image": Garantía de mantenimiento y actualizaciones por parte de la comunidad.
- Menor Cantidad de Vulnerabilidades: Elección de imágenes con el menor número de vulnerabilidades conocidas.
- Requerimientos Mínimos: Capacidad para satisfacer las dependencias y necesidades funcionales de las bibliotecas utilizadas.
- Optimización del Tamaño: Uso de imágenes ligeras para acelerar el tiempo de despliegue y reducir el consumo de recursos.
Se ha utilizado Docker Compose para orquestar la creación y configuración de los contenedores, así como de la red. Este enfoque busca adherirse a las buenas prácticas aprendidas en el workshop anterior.
Espero que el Challenge cumpla con las espectivas y sea el ganador, por que si nó me mato 💀.
Antes de seguir las instrucciones, asegúrese de tener una terminal, PowerShell o consola abierta en su sistema.
Para clonar el repositorio, utilice el siguiente comando en su terminal, o en su IDE/aplicación favorita. Si aún no tiene instalado Git, puede descargarlo aquí.
git clone https://github.com/nuevakenia/docker_ganador.git
Descargue Docker Desktop según su sistema operativo:
Siga las instrucciones específicas para su sistema operativo para completar la instalación.
Para verificar que Docker Daemon se haya iniciado correctamente, ejecute:
docker --version
Si todo está bien, debería ver la versión de Docker como salida.
Abra la terminal, navegue hasta la carpeta del repositorio clonado y ejecute ls
para confirmar que los archivos y carpetas necesarios están presentes.
cd docker_ganador
ls
Debería ver una estructura similar a:
README.md backend docker-compose.yml api db
Todas las configuraciones relacionadas con variables de entorno, credenciales y datos de prueba (mock data) para la base de datos y los servicios de backend y API ya están preestablecidas.
Si desea modificar los datos de prueba de la base de datos, puede hacerlo editando el archivo init.sql
. Este archivo se encuentra en la ruta /db
.
Modificación de Variables de Entorno
Para cambiar las variables de entorno, por favor consulte la sección de Preguntas Frecuentes FAQ
ubicada en la parte final de este documento.
Para construir y desplegar los contenedores, ejecute el siguiente comando:
docker-compose up --build
Busque mensajes similares a los siguientes para confirmar que los contenedores se han desplegado correctamente:
docker_ganador-db-1 | 2023-08-31 02:16:27.586 UTC [1] LOG: database system is ready to accept connections
docker_ganador-backend-1 | INFO: Started server process [1]
docker_ganador-backend-1 | INFO: Waiting for application startup.
docker_ganador-backend-1 | INFO: Application startup complete.
docker_ganador-backend-1 | INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
docker_ganador-streamlit-1 |
docker_ganador-streamlit-1 | You can now view your Streamlit app in your browser.
docker_ganador-streamlit-1 |
docker_ganador-streamlit-1 | Network URL: http://172.18.0.3:80
docker_ganador-streamlit-1 | External URL: http://200.83.159.136:80
- Abra su navegador y navegue hasta
http://0.0.0.0:80
. - Seleccione la sucursal y el rango de fechas(marcaciones disponibles desde el 2023/03/27 - 2023/04/06 si no hay marcaciones no se podrá descargar el reporte).
- Haga clic en "Enviar".
- Haga clic en "Visualizar Reportes" y refresque la página haciendo click en el botón hasta que el reporte cambie de estado a "Finalizado" y se pueda descargar.
No, debido a las configuraciones de network
en docker-compose.yml
, solo es posible acceder desde el servicio de api streamlit.
No, por las mismas razones mencionadas anteriormente.
Sí, gracias al volumen asignado, los datos son persistentes.
No, Uvicorn es el Servidor ASGI utilizado por FastAPI y al igual que el servidor interno de Streamlit, ambos son aptos para trabajar en ambientes productivos.
Para cambiar las variables de entorno, es necesario abrir el archivo .env
ubicado en la carpeta raíz del repositorio. En este archivo, puede agregar, modificar o eliminar las variables de entorno según sus necesidades.
Por ejemplo, su archivo .env
podría lucir de la siguiente manera:
POSTGRES_USER=ganador
POSTGRES_PASSWORD=666
POSTGRES_DB=challenge
DB_USER=ganador
DB_PASS=666
DB_HOST=db
DB_NAME=challenge
ENDPOINT_URL="http://backend:8000/"
BACKEND_PORT=8000
API_PORT=80
Si elimina, agrega o modifica el nombre de alguna de las variables de entorno, deberá realizar cambios correspondientes en el archivo docker-compose.yml
.
En la sección de cada contenedor, encontrará el bloque environment
. A continuación, se muestra un ejemplo:
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
Aquí, el nombre a la izquierda (POSTGRES_USER
, POSTGRES_PASSWORD
, POSTGRES_DB
, etc.) representa la variable de entorno que el servicio utilizará. El valor a la derecha (${POSTGRES_USER}
, ${POSTGRES_PASSWORD}
, ${POSTGRES_DB}
, etc.) hace referencia al nombre de la variable que se encuentra en su archivo .env
.