3.1 Creación de Dockerfile para el frontend (ReactJS)
En esta etapa vamos a crear un Dockerfile para cada uno de los tres servicios de nuestra aplicación multicontenedor: el frontend en ReactJS, el backend en Python (Flask) y la base de datos PostgreSQL. El Dockerfile define las instrucciones para crear la imagen Docker de cada servicio.
Crea un archivo Dockerfile en el directorio frontend:
cd frontend
touch Dockerfile
Contenido del Dockerfile para el frontend:
# Usamos la imagen base node
FROM node:14
# Establecemos el directorio de trabajo
WORKDIR /app
# Copiamos package.json y package-lock.json para instalar dependencias
COPY package*.json ./
# Instalamos dependencias
RUN npm install
# Copiamos los demás archivos del proyecto
COPY . .
# Configuramos el puerto 3000
EXPOSE 3000
# Iniciamos la aplicación
CMD ["npm", "start"]
Este Dockerfile realiza los siguientes pasos:
- Usa la imagen base
node:14
. - Establece el directorio de trabajo
/app
. - Copia los archivos
package.json
ypackage-lock.json
. - Instala dependencias usando
npm install
. - Copia todos los archivos del proyecto al directorio de trabajo.
- Abre el puerto
3000
para acceso a la aplicación. - Inicia la aplicación con
npm start
.
3.2 Creación de Dockerfile para el backend (Flask)
Crea un archivo Dockerfile en el directorio backend:
cd backend
touch Dockerfile
Contenido del Dockerfile para el backend:
# Usamos una imagen base de python
FROM python:3.12
# Configuramos el directorio de trabajo
WORKDIR /app
# Copiamos requirements.txt para instalar las dependencias
COPY requirements.txt ./
# Instalamos las dependencias
RUN pip install --no-cache-dir -r requirements.txt
# Copiamos los demás archivos del proyecto
COPY . .
# Configuramos el puerto 5000
EXPOSE 5000
# Ejecutamos la aplicación
CMD ["python", "run.py"]
Este Dockerfile realiza los siguientes pasos:
- Utiliza la imagen base
python:3.12
. - Configura el directorio de trabajo
/app
. - Copia el archivo
requirements.txt
. - Instala las dependencias usando
pip install
. - Copia todos los archivos del proyecto al directorio de trabajo.
- Abre el puerto
5000
para acceder a la aplicación. - Ejecuta la aplicación con
python run.py
.
3.3 Creación de Dockerfile para la base de datos (PostgreSQL)
Para la base de datos PostgreSQL usaremos la imagen oficial, por lo tanto, la creación de nuestro propio Dockerfile no es necesaria. En su lugar, configuraremos PostgreSQL a través de docker-compose.yml
.
3.4 Construcción y prueba de imágenes Docker
Después de crear los Dockerfile para el frontend y el backend, es importante probar su construcción.
Construcción de la imagen Docker para el frontend:
cd frontend
docker build -t task_management_frontend .
Construcción de la imagen Docker para el backend:
cd ../backend
docker build -t task_management_backend .
Verificación del funcionamiento de los contenedores:
Ejecutar el contenedor para el frontend:
docker run -p 3000:3000 task_management_frontend
Ejecutar el contenedor para el backend:
docker run -p 5000:5000 task_management_backend
Ve a http://localhost:3000 para comprobar el funcionamiento del frontend, y a http://localhost:5000 para comprobar el funcionamiento del backend.
GO TO FULL VERSION