https://github.com/derek486/hotelier-management-back
Backend made in Django for hotel management project
https://github.com/derek486/hotelier-management-back
django docker mysql nginx
Last synced: about 2 months ago
JSON representation
Backend made in Django for hotel management project
- Host: GitHub
- URL: https://github.com/derek486/hotelier-management-back
- Owner: Derek486
- Created: 2023-07-17T15:42:19.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-25T12:57:58.000Z (about 1 year ago)
- Last Synced: 2025-10-31T03:46:53.183Z (7 months ago)
- Topics: django, docker, mysql, nginx
- Language: JavaScript
- Homepage:
- Size: 1.06 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Django Backend
Para ejecutar la aplicación con Docker, primero debemos de crear la base de datos, seguido deL proyecto de Django, para ello seguimos los siguientes pasos:
> [!NOTE]
> La información completa de este proyecto se encontrará en el siguiente repositorio:
> https://github.com/Derek486/hotelier-management-stack.git
## Requirements:
- asgiref
- packaging
- Django -> El framework base (importante)
- django-cors-headers -> Permite conexión desde otros servidores (importante)
- djangorestframework -> Para la elaboración de apis (importante)
- gunicorn -> Servidor basado en wsgi (importante)
- mysqlclient -> Permite conexión con Mysql
- Pillow -> Procesamiento de imágenes
- pytz -> Manejo de zonas horarias
- sqlparse -> Formato de sentencias SQL
- tzdata -> Manejo de zona horaria
## Mysql:
1. Crear un contenedor de mysql, para ello primero deberás de construir la imagen a partir del Dockerfile, ubícate en el directorio 'mysql':
```
cd ./mysql
```
2. Construir la imagen de mysql:
```
docker build -t mysql_pweb .
```
## Django:
1. Para crear la imagen de django seguiremos los mismos pasos que para el contenedor de mysql:
```
cd ./python
docker build -t django_pweb .
```
## Conexion de red:
Por defecto, cuando creemos los contenedores estos estarán separados y no tendrán comunicación, para ello podemos crear un docker-compose e implementar ambos contenedores como servicios, sin embargo, usaremos otro comando:
```
docker network create web
```
Donde 'web' será el nombre de nuestra red, siendo útil para comunicar los contenedores de mysql y django.
Luego de crear la red podemos iniciar los contenedores, sin embargo, para evitar la pérdida de información se opta por crear volúmenes, para ello, utilizamos la opción '-v':
```
docker run -d -p 3306:3306 --name db --network web -v db_pweb_volume:/var/lib/mysql mysql_pweb
docker run -d -p 8000:80 --name django --network web -v django_pweb_volume:/usr/src/app django_pweb
```
Esperamos a que el contenedor de mysql termine de iniciar y acepte conexiones, luego de ello creamos el contenedor de django, si lo ejecutó antes puede reiniciarlo hasta que la base de datos esté disponible.
## Ejecución local:
Si no se desea crear un contenedor de Docker, el proyecto puede ser iniciado de manera local, para ello se deben tomar en cuenta las siguientes consideraciones:
- La base de datos puede mantenerse, en caso se haya creado el contenedor de mysql, solo se tendría que modificar el host a localhost y en el puerto 3306, si no se creó con anterioridad entonces en `settings.py` se deben de colocar los datos de la base de datos local.
- En caso se haga uso del servidor de nginx, puede ser utilizado el archivo `app_nginx.conv` dentro del directorio `python/nginx`, con la diferencia de que el servidor de backend debería escuchar al host localhost y en el mismo puerto 8000, caso contrario, puede utilizar el servidor de wsgi de django: `python manage.py runserver`
- Las migraciones se ejecutarían de forma manual, al igual que la creación del superusuario.
- Para la conexión con el Front End de Angular, será necesario modificar el CORS en `settings.py`, autorizando a localhost y el puerto por defecto de Angular, sea 4200 o, si se utiliza su servidor de nginx, sería en el puerto 80