From bf5a38d425b7c5d675a1778a002fa33a19ea2f24 Mon Sep 17 00:00:00 2001 From: minguezsanzjuanjose Date: Tue, 14 Apr 2026 22:46:18 +0200 Subject: [PATCH] cambios en migraciones --- apps/backend_admin/migrations/__init__.py | 1 + apps/common/migrations/__init__.py | 1 + apps/promociones/fixtures/semillas.json | 35 +++++++++++++++++++ apps/promociones/migrations/__init__.py | 1 + deployments/Dockerfile | 24 +++++++------ deployments/docker-compose.yml | 41 ++++++++++++----------- deployments/entrypoint.sh | 7 ++-- 7 files changed, 78 insertions(+), 32 deletions(-) create mode 100644 apps/common/migrations/__init__.py create mode 100644 apps/promociones/fixtures/semillas.json create mode 100644 apps/promociones/migrations/__init__.py diff --git a/apps/backend_admin/migrations/__init__.py b/apps/backend_admin/migrations/__init__.py index e69de29..1ff90f5 100644 --- a/apps/backend_admin/migrations/__init__.py +++ b/apps/backend_admin/migrations/__init__.py @@ -0,0 +1 @@ +# Archivo para marcar esta carpeta como paquete de migraciones \ No newline at end of file diff --git a/apps/common/migrations/__init__.py b/apps/common/migrations/__init__.py new file mode 100644 index 0000000..1ff90f5 --- /dev/null +++ b/apps/common/migrations/__init__.py @@ -0,0 +1 @@ +# Archivo para marcar esta carpeta como paquete de migraciones \ No newline at end of file diff --git a/apps/promociones/fixtures/semillas.json b/apps/promociones/fixtures/semillas.json new file mode 100644 index 0000000..5cf3d5a --- /dev/null +++ b/apps/promociones/fixtures/semillas.json @@ -0,0 +1,35 @@ +[ + { + "model": "promociones.promocion", + "pk": 1, + "fields": { + "nombre": "Oferta de Bienvenida", + "fecha_inicio": "2026-04-01", + "descripcion": "Descuento para nuevos usuarios", + "activo": true, + "categoria_id": 1 + } + }, + { + "model": "promociones.promocion", + "pk": 2, + "fields": { + "nombre": "Promo Primavera", + "fecha_inicio": "2026-05-01", + "descripcion": "Todo al 20% de descuento", + "activo": true, + "categoria_id": 2 + } + }, + { + "model": "promociones.promocion", + "pk": 3, + "fields": { + "nombre": "Liquidación Stock", + "fecha_inicio": "2026-04-14", + "descripcion": "Últimas unidades", + "activo": false, + "categoria_id": 1 + } + } +] \ No newline at end of file diff --git a/apps/promociones/migrations/__init__.py b/apps/promociones/migrations/__init__.py new file mode 100644 index 0000000..1ff90f5 --- /dev/null +++ b/apps/promociones/migrations/__init__.py @@ -0,0 +1 @@ +# Archivo para marcar esta carpeta como paquete de migraciones \ No newline at end of file diff --git a/deployments/Dockerfile b/deployments/Dockerfile index fd3fd91..c123e9f 100644 --- a/deployments/Dockerfile +++ b/deployments/Dockerfile @@ -1,33 +1,35 @@ -# Usamos una imagen ligera de Python +# 1. Usamos una imagen ligera de Python FROM python:3.12-slim -# Evitar que Python genere archivos .pyc y que el buffer se sature +# 2. Evitar archivos .pyc y saturación del buffer ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 ENV TZ=Europe/Madrid -# Directorio de trabajo +# 3. Directorio de trabajo interno del contenedor WORKDIR /app -# Instalar dependencias del sistema necesarias y limpiar caché en un solo paso +# 4. Instalar dependencias del sistema RUN apt-get update && apt-get install -y \ libpq-dev \ gcc \ gettext \ && rm -rf /var/lib/apt/lists/* -# Copiar dependencias (Ajustado: asumiendo que están en deployments/) -COPY deployments/requirements.txt /app/ +# 5. COPIAR REQUISITOS +# OJO: Ahora el contexto es la RAÍZ, así que el archivo está en deployments/ +COPY deployments/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -# Copiar el resto del código del proyecto -# El contexto de docker-compose suele ser la raíz, por lo que copiamos todo a /app -COPY . /app/ +# 6. COPIAR EL CÓDIGO +# Copiamos todo el contenido de la raíz (.) al directorio de trabajo (/app) +# Esto incluirá apps/, core/, manage.py, etc. +COPY . . -# Exponer el puerto de Django +# 7. EXPOSICIÓN Y SCRIPT DE ENTRADA EXPOSE 8000 -# Script de entrada (lo crearemos en el siguiente paso) +# El entrypoint también está en deployments/ COPY deployments/entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh diff --git a/deployments/docker-compose.yml b/deployments/docker-compose.yml index a3cdb79..5b4ed6c 100644 --- a/deployments/docker-compose.yml +++ b/deployments/docker-compose.yml @@ -1,20 +1,23 @@ +version: '3.8' + services: - db: + gitea-db: image: postgres:15 - container_name: ${DB_CONTAINER_NAME:-django_db_local} + # Usará el nombre de tu .env (django_db_local) + container_name: ${DB_CONTAINER_NAME:-django_db_dev} restart: always - # Solo usamos el .env de esta carpeta - env_file: .env environment: - - POSTGRES_DB=${DB_NAME} - - POSTGRES_USER=${DB_USER} - - POSTGRES_PASSWORD=${DB_PASSWORD} + POSTGRES_DB: ${DB_NAME:-gitea} + POSTGRES_USER: ${DB_USER:-gitea} + POSTGRES_PASSWORD: ${DB_PASSWORD:-gitea} + volumes: + - postgres_data:/var/lib/postgresql/data + # --- ESTO ES LO QUE FALTA --- ports: - "${DATABASE_EXPOSE_PORT:-5432}:5432" - volumes: - - local_postgres_data:/var/lib/postgresql/data + # ---------------------------- healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"] + test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-gitea} -d ${DB_NAME:-gitea}"] interval: 5s timeout: 5s retries: 5 @@ -25,18 +28,18 @@ services: dockerfile: deployments/Dockerfile container_name: ${APP_CONTAINER_NAME:-django_app_dev} restart: always - volumes: - - ..:/app + env_file: + - .env + environment: + - DEBUG=${DEBUG_MODE:-1} + # IMPORTANTE: Este nombre debe coincidir con el nombre del servicio arriba (gitea-db) + - DB_HOST=gitea-db + - DB_PORT=5432 ports: - "${PORT:-8000}:8000" - # Inyectamos el .env local al contenedor web - env_file: .env - environment: - - DB_HOST=db - - DB_PORT=5432 depends_on: - db: + gitea-db: condition: service_healthy volumes: - local_postgres_data: \ No newline at end of file + postgres_data: \ No newline at end of file diff --git a/deployments/entrypoint.sh b/deployments/entrypoint.sh index 115690f..fc401c5 100644 --- a/deployments/entrypoint.sh +++ b/deployments/entrypoint.sh @@ -4,11 +4,14 @@ set -e echo "--> Ejecutando migraciones..." +# Esto asegura que si hay cambios en models.py, se generen y apliquen las tablas python manage.py makemigrations --noinput python manage.py migrate --noinput -# En el futuro, aquí podrías añadir: -# python manage.py collectstatic --noinput +echo "--> Cargando datos de prueba..." +# Este comando busca archivos JSON en las carpetas 'fixtures' de tus apps +# Usamos || true para que si el archivo no existe o ya están cargados, el contenedor no se detenga +python manage.py loaddata semillas || echo "Aviso: No se pudieron cargar las semillas (fichero no encontrado o error de formato)." echo "--> Arrancando el servidor Django..." # Usamos exec para que Django sea el proceso principal (PID 1) y reciba señales de Docker