Skip to content

jfarfannet/sem11-docker-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gestor de Contactos (Python MVC + PostgreSQL)

Aplicación web MVC para administrar contactos usando Flask y PostgreSQL.

Tecnologías

  • Python 3.12
  • Flask
  • Flask-SQLAlchemy
  • PostgreSQL
  • Gunicorn
  • Docker

Estructura MVC

app/
  controllers/   # Lógica de negocio y operaciones CRUD
  models/        # Entidades y acceso a datos (SQLAlchemy)
  views/         # Rutas HTTP y renderizado de plantillas
  templates/     # Vistas HTML (Jinja2)
  static/        # Estilos CSS

Requisitos previos

  • Python 3.12+
  • PostgreSQL 15+
  • Docker (opcional, para despliegue en contenedor)

1) Instalación y ejecución en local

1. Clonar/abrir proyecto

cd proy1

2. Crear y activar entorno virtual

En Windows PowerShell:

python -m venv .venv
.\.venv\bin\Activate.ps1

3. Instalar dependencias

pip install -r requirements.txt

4. Crear base de datos PostgreSQL

Ejemplo con psql:

CREATE DATABASE contactos_db;

5. Configurar variables de entorno

Copia .env.example a .env y ajusta valores:

SECRET_KEY=change-me
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/contactos_db

Si usas PowerShell para una sesión rápida:

$env:SECRET_KEY="mi_clave"
$env:DATABASE_URL="postgresql://postgres:postgres@localhost:5432/contactos_db"

6. Ejecutar aplicación

python run.py

Abrir en navegador:

http://localhost:5000

2) Ejecucion con Docker Compose (app + PostgreSQL)

1. Construir y levantar servicios

docker compose up -d --build

Esto iniciara:

  • db: PostgreSQL 15
  • app: Aplicacion Flask en puerto 5000

2. Ver estado de contenedores

docker compose ps

3. Ver logs

docker compose logs -f

4. Detener servicios

docker compose down

Si quieres eliminar tambien el volumen de datos de PostgreSQL:

docker compose down -v

Abrir en navegador:

http://localhost:5000

Endpoints principales

  • GET / Lista y búsqueda de contactos.
  • GET /contacts/new Formulario para crear contacto.
  • POST /contacts/new Crear contacto.
  • GET /contacts/<id>/edit Formulario para editar contacto.
  • POST /contacts/<id>/edit Actualizar contacto.
  • POST /contacts/<id>/delete Eliminar contacto.

Notas

  • La tabla se crea automáticamente al iniciar la aplicación (db.create_all()).
  • El campo email es único para evitar duplicados.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors