CodeGym /Cursos /Docker SELF /Demostración del trabajo con Docker

Demostración del trabajo con Docker

Docker SELF
Nivel 23 , Lección 0
Disponible

¡Bienvenidx al nivel final del curso sobre Docker!

En este nivel vamos a juntar todo el conocimiento y las habilidades que ya obtuviste.

En las lecciones pueden aparecer lenguajes de programación o tecnologías que no conoces. Tendrás que configurar puertos o agregar nombres a métodos, todo esto basado en código ya preparado, donde el 99% del trabajo ya está hecho.

No te preocupes si algo te parece desconocido. Esto está hecho a propósito para mejorar tu habilidad de "esto no lo sé, pero puedo aprenderlo rápidamente".

1.1 Planteamiento del problema

Vamos a crear una pequeña aplicación multicontenedor y desglosar paso a paso todo el proceso de desarrollo: desde el planteamiento del problema hasta la demostración del producto final.

Objetivo: crear una aplicación multicontenedor para la gestión de tareas, que permita a los usuarios crear, editar, eliminar tareas y asignarlas a otros usuarios. La aplicación estará compuesta por tres componentes principales: un frontend en ReactJS, un backend en Python (Flask) y una base de datos PostgreSQL.

Tareas principales:

  1. Definir los requisitos funcionales para cada componente de la aplicación.
  2. Escoger las tecnologías y herramientas a utilizar.
  3. Preparar el entorno de desarrollo.

1.2 Definición de requerimientos funcionales

Requerimientos funcionales para la aplicación de gestión de tareas:

  1. Registro y autorización de usuarios:
    • El usuario puede registrarse en el sistema.
    • El usuario puede autorizarse en el sistema.
  2. Gestión de tareas:
    • El usuario puede crear tareas.
    • El usuario puede editar tareas.
    • El usuario puede eliminar tareas.
    • El usuario puede ver la lista de tareas.
    • El usuario puede asignar tareas a otros usuarios.
  3. Visualización y filtrado de tareas:
    • El usuario puede filtrar tareas por estado (completadas/no completadas).
    • El usuario puede ver tareas asignadas a otros usuarios.

1.3 Definición de las tecnologías y herramientas utilizadas

Para la implementación de esta aplicación se utilizarán las siguientes tecnologías y herramientas:

  1. Frontend:
    • ReactJS: librería para crear interfaces de usuario.
    • Axios: librería para realizar solicitudes HTTP.
  2. Backend:
    • Python: lenguaje de programación para crear la parte del servidor.
    • Flask: framework web para crear REST API.
    • SQLAlchemy: ORM para interactuar con la base de datos.
  3. Base de datos:
    • PostgreSQL: base de datos relacional para almacenar información sobre usuarios y tareas.
  4. Contenerización y orquestación:
    • Docker: plataforma para la contenerización de aplicaciones.
    • Docker Compose: herramienta para gestionar aplicaciones con múltiples contenedores.

1.4 Preparación del entorno de desarrollo

Para completar el proyecto con éxito, es necesario configurar el entorno de desarrollo y asegurarse de que todas las herramientas necesarias estén instaladas.

Pasos para preparar el entorno:

  1. Instalar Docker:
    • Si aún no lo has hecho, vuelve a la lección 4 del nivel uno o sigue las instrucciones en el sitio oficial de Docker.
  2. Instalar Docker Compose:
    • Si Docker Compose aún no está instalado, consulta la lección 2 del nivel 4 o sigue las instrucciones en el sitio oficial de Docker Compose.
  3. Crear la estructura del proyecto:
    • Crea un directorio para el proyecto y subdirectorios principales para cada servicio:
Terminal

mkdir task_management_app
cd task_management_app
mkdir frontend backend database
        
  1. Inicialización del proyecto:
    • Dentro del directorio frontend inicializa un nuevo proyecto ReactJS:
Terminal

cd frontend
npx create-react-app .
cd ..
        

• Dentro del directorio backend crea la estructura para la aplicación Python/Flask:

Terminal

cd backend
mkdir app
touch app/__init__.py
touch app/models.py
touch app/routes.py
touch run.py
touch requirements.txt
cd ..
        

• Dentro del directorio database crea un Dockerfile para PostgreSQL (si es necesario):

Terminal

cd database
touch Dockerfile
cd ..
        

1.5 Ejemplo de contenido de archivos:

Archivo backend/app/__init__.py:

Python

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://taskuser:taskpassword@database:5432/taskdb'
db = SQLAlchemy(app)

from app import routes
    

Archivo backend/app/models.py:

Python

from app import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    tasks = db.relationship('Task', backref='owner', lazy=True)

class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(120), nullable=False)
    description = db.Column(db.Text, nullable=True)
    owner_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    

Archivo backend/app/routes.py:

Python

from app import app

@app.route('/')
def index():
    return "¡Hola, App de Gestión de Tareas!"
    

Archivo backend/run.py:

Python

from app import app

if __name__ == '__main__':
    app.run(host='0.0.0.0')
    

Archivo backend/requirements.txt:

Text

Flask
Flask-SQLAlchemy
psycopg2-binary
    
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION