Skip to content

jals-es/React_DjangoRestFramework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dockerizar proyecto

* La versión dockerizada está muy desactualizada y solo se encuentra funcional el login y el registro

Para dockerizar este proyecto se ha utilizado 2 dockerfiles gestionados con docker compose. Se ha separado el proyecto en 3 contenedores para las diferentes partes. MySql, Backend y Frontend.

Docker Compose

Como se ha comentado anteriormente, se ha utilizado docker compose para gestionar la dockerización de este proyecto. Para ello hemos creado el docker-compose.yml en la raiz del proyecto, el cual contiene 3 contenedores.
El primero, llamado db va ser el contenedor en el que estará nuestro servidor de base de datos MySql. Para ello vamos a utilizar la imagen mysql y le pasaremos las variables de entorno corresponientes para que se ejecute en el puerto que queremos. Para que todos los servicios funcionen correctamente, los conectaremos en la network main que será creada al final de documento.
compose-mysql

En segundo lugar, creamos el contenedor del backend. Para ello usamos una imagen que generará el Dockerfile que se encuentra dentro del directorio ./backend/. Como hemos hecho anteriormente, le pasamos todas las variables de entorno necesarias y lo añadimos a la network main. En este caso le especificamos que para ser montado, debe esperar a que se monte el contenedor anterior de mysql al que hemos llamado db.
La opción depends_on no es suficiente, ya que el servicio de mysql tarda mas en iniciarse de lo que tarda nuestro servidor de django. Es por esto que necesitamos el script waitforit.sh que se encuentra dentro del directorio ./backend/django_server/. Para ejecutarlo le damos permisos de ejecución, ejecutamos el script y cuando se haya terminado la ejecución del script, significara que el servicio de mysql estará activo. Por lo tanto podremos proceder a hacer la migración de las bases de datos y a arrancar el servidor en el puerto 8000.
compose-server

Por utlimo, creamos el contenedor del frontend. Para ello usamos la imagen que generará el Dockerfile que se encuentra dentro del directoro ./forntend/. En este caso solo necesitamos la variable de entorno del puerto en el que queremos que se ejecute.
Le especificamos que se ejecute el comando npm install para instalar todas las dependencias y posteriormente que se ejecute el comando npm start para arrancar el servicio de React. Como hemos hecho en el servidor, debemos especificarle que se ejecutará una vez este montado el servidor.
compose-app

Como se puede observar en la ultima captura, al final del documento creamos la network main.

Dockerfile Backend

Como ya hemos adelantado anteriormente, para crear el contenedor del servidor de Django necesitamos un Dockerfile que se encuentra dentro del directorio ./backend/.
En este Dockerfile usamos la imagen de python con la versión 3.8.10. Especificamos que se trabajará dentro de un directorio backend y copiamos a este todo el directorio de nuestro servidor de django. A continuación instalamos todas las dependencias que se encuentran en nustro requirements.txt y exponemos el puerto 8000 que es el que usa Django para ejecutarse.
dockerfile-backend

Es necesario que en el settings.py de nuestro servidor de Django, pongamos correctamente las variables de entorno para que se conecte a nuestro contenedor de mysql.
settingsDB

Dockerfile Frontend

Como ya hemos adelantado anteriormente, para crear el contenedor del cliente de React necesitamos un Dockerfile que se encuentra dentro del directorio ./frontend/.
En este Dockerfile, usamos la imagen de node en la versión 14.18.3. Especificamos que trabajaremos dentro del directorio frontend, y copiamos ahi todos los archivos de nuestro frontend. Finalmente exponemos el puerto 8080 que usa React para ejecutarse.
dockerfile-frontend

Para comprobar que esta funcionando entramos a http://localhost:8080 y nos deberá salir el login de la aplicación.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published