Este es un proyecto que utiliza Docker y Docker Compose para crear y gestionar los entornos de desarrollo y producción. A continuación se proporciona una guía paso a paso sobre cómo configurar y ejecutar el proyecto, así como cómo construir y levantar los contenedores tanto para desarrollo como para producción.
- Docker (incluyendo Docker Compose) debe estar instalado en tu máquina. Puedes verificar si tienes Docker instalado ejecutando el siguiente comando:
docker --versionSi no tienes Docker instalado, por favor sigue las instrucciones en la documentación oficial de Docker.
Si no tienes Docker instalado en tu máquina, sigue estos pasos:
- Ejecuta el siguiente comando para instalar Docker:
sudo apt install docker.io- Verifica que Docker esté instalado correctamente:
docker --versionDescarga Docker Desktop desde la página oficial de Docker: Link oficial aquí.
Docker Compose es una herramienta que facilita la administración de múltiples contenedores Docker. A partir de Docker 1.27.0, Docker Compose viene incluido como parte de la instalación de Docker, pero si no lo tienes, puedes instalarlo por separado:
- Descarga Docker Compose ejecutando el siguiente comando:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose- Dale permisos de ejecución:
sudo chmod +x /usr/local/bin/docker-compose- Verifica que Docker Compose se haya instalado correctamente:
docker-compose --versionDocker Compose viene incluido en Docker Desktop, por lo que solo necesitas instalar Docker Desktop como se explicó anteriormente.
En la raíz del proyecto, crea un nuevo archivo .env y agrega la siguiente configuración:
DATABASE_URL=postgresql://{user}:{password}@{host}:{port}/{database}
REDIS_URL=redis://redis:6379
ENV=development
PGADMIN_DEFAULT_EMAIL={random_name}@{random_domain}.{random_tld}
PGADMIN_DEFAULT_PASSWORD={random_password}
POSTGRES_USER={random_name}
POSTGRES_PASSWORD={random_password}Explicación de las variables:
DATABASE_URL: La URL de conexión a la base de datos PostgreSQL.REDIS_URL: La URL de conexión al servicio de Redis.ENV: El entorno de ejecución, que puede ser 'development' o 'production'.PGADMIN_DEFAULT_EMAIL: El correo electrónico por defecto para el usuario administrador de pgAdmin.PGADMIN_DEFAULT_PASSWORD: La contraseña para acceder a pgAdmin.POSTGRES_USER: El nombre de usuario de la base de datos PostgreSQL.POSTGRES_PASSWORD: La contraseña de la base de datos PostgreSQL.
- En la ruta
/core/backend, ejecuta el siguiente comando para inicializar el directorio de migración con Alembic:
alembic init migrations- En el archivo
alembic.ini, busca la línea que comienza con:
sqlalchemy.url = driver://user:pass@localhost/dbnameY reemplázala con:
sqlalchemy.url = postgresql://{user}:{password}@{host}:{port}/{database}Asegúrate de que los valores de {user}, {password}, {host}, {port}, y {database} coincidan con los valores definidos en tu archivo .env.
- Para generar la primera migración de la base de datos, ejecuta:
alembic revision --autogenerate -m "Initial migration"- Finalmente, para aplicar las migraciones y sincronizar la base de datos con el modelo actual, ejecuta:
alembic upgrade head- Crea un archivo
.enven la ruta/core/backendcon las siguientes variables de entorno:
DATABASE_URL=postgresql://{user}:{password}@{host}:{5432}/{database}
REDIS_URL=redis://redis:6379
SMTP_USER=miguel.teranj02@gmail.com
SMTP_PASSWORD="neiq crxg wkol jhrt"
SECRET_KEY={secret_key}
ALGORITHM=HS256- Para crear el secret key, ejecuta el siguiente comando:
openssl rand -base64 32Para levantar los contenedores en modo de desarrollo, utiliza el siguiente comando:
docker compose up --buildEste comando construirá las imágenes necesarias y levantará los contenedores definidos en docker-compose.yml. Para detener los contenedores, puedes usar:
docker compose downPara levantar los contenedores en modo de producción, utiliza el siguiente comando:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --buildEste comando utiliza el archivo docker-compose.prod.yml para configurar el entorno de producción. Para detener los contenedores en producción, usa:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml downUna vez que los contenedores estén en funcionamiento, podrás acceder a las siguientes aplicaciones:
- Backend: http://localhost:8000
- Frontend: http://localhost:3000
- pgAdmin: http://localhost:5050
- RedisInsight: http://localhost:5540
- Nginx: http://localhost:80
Puedes acceder a pgAdmin usando las siguientes credeciales definidas en el archivo .env:
- Email:
{random_name}@{random_domain}.{random_tld} - Contraseña:
{random_password}
- Asegúrate de tener configuradas correctamente las variables de entorno en el archivo
.env. - Si experimentas problemas con los contenedores, revisa los logs usando
docker compose logsodocker compose logs -fpara obtener más detalles.
¡Con eso, tu entorno de desarrollo y producción debe estar listo para usarse!
Este README proporciona instrucciones completas para instalar Docker, configurar el proyecto, y ejecutar los contenedores tanto en desarrollo como en producción, además de los pasos específicos para configurar Alembic y las migraciones de la base de datos.
¡Te invitamos a probar las rutas de la API usando Postman. Simplemente haz clic en el siguiente enlace para unirte a nuestro equipo de Postman y empezar a interactuar con las rutas ya definidas en el proyecto.
¡Comienza a explorar y hacer pruebas de las funcionalidades de la API directamente desde Postman!
¡Con eso, tu entorno de desarrollo y producción debe estar listo para usarse!
Este README proporciona instrucciones completas para instalar Docker, configurar el proyecto, y ejecutar los contenedores tanto en desarrollo como en producción, además de los pasos específicos para configurar Alembic y las migraciones de la base de datos.