From 300a5bede4d820e6fadb5a8b5ea403fea92e0335 Mon Sep 17 00:00:00 2001 From: nickpons666 Date: Sun, 1 Feb 2026 01:25:14 -0600 Subject: [PATCH] =?UTF-8?q?Correcciones=20finales:=20Carga=20de=20entorno?= =?UTF-8?q?=20en=20webhook,=20rutas=20en=20entrypoint=20y=20b=C3=BAsqueda?= =?UTF-8?q?=20SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- README.md | 12 +++++-- docker-entrypoint.sh | 2 +- public/telegram/webhook.php | 4 +++ scripts/build_push.sh | 72 +++++++++++++++++++++++++++++++++++++ src/Models/Assignment.php | 5 +-- 6 files changed, 91 insertions(+), 6 deletions(-) create mode 100755 scripts/build_push.sh diff --git a/Dockerfile b/Dockerfile index dd602fc..421e612 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:bullseye-slim +FROM debian:bookworm-slim # Evitar interacciones durante instalación ENV DEBIAN_FRONTEND=noninteractive diff --git a/README.md b/README.md index 3b4ada6..67cfbfa 100644 --- a/README.md +++ b/README.md @@ -24,12 +24,20 @@ Aplicación web integral para la gestión automatizada de rotaciones de turnos, ### Opción A: Docker Compose / Portainer 1. Clona el repositorio. -2. Construye la imagen: +2. Construye la imagen manualmente o usa el script interactivo: ```bash - docker build -t contenedor-ibiza . + ./scripts/build_push.sh ``` 3. Ejecuta con las variables de entorno necesarias (ver `contenedor.yaml` como ejemplo). +### Actualización de Imagen (Registry Privado) + +Para generar una nueva versión y subirla a tu registro (`10.10.4.3:5000`): +```bash +./scripts/build_push.sh +``` +El script solicitará la versión (tag) y se encargará del build y el push automáticamente. + ### Opción B: CasaOS / ZimaOS 1. Utiliza la función de "Importar" y selecciona el archivo `contenedor.yaml`. diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index ad23683..5b62671 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -2,7 +2,7 @@ set -e # Definir ruta del archivo .env -ENV_FILE="/var/www/html/contenedor/.env" +ENV_FILE="/var/www/html/.env" # Siempre regenerar el archivo .env para asegurar que las variables de entorno (YAML) tengan prioridad echo "Generating .env file from environment variables..." diff --git a/public/telegram/webhook.php b/public/telegram/webhook.php index 04389b7..fad628d 100644 --- a/public/telegram/webhook.php +++ b/public/telegram/webhook.php @@ -2,6 +2,10 @@ require_once __DIR__ . '/../../vendor/autoload.php'; use App\Services\TelegramBot; +use App\Config\Env; + +// Cargar variables de entorno +Env::load(); // Recibir solicitud webhook $input = file_get_contents('php://input'); diff --git a/scripts/build_push.sh b/scripts/build_push.sh new file mode 100755 index 0000000..7853ef8 --- /dev/null +++ b/scripts/build_push.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# Script interactivo para construir y subir imagen al Registry Privado + +# Configuración +REGISTRY_URL="10.10.4.3:5000" +IMAGE_NAME="contenedor_ibiza" + +# Colores +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +NC='\033[0m' + +echo -e "${YELLOW}🚀 Iniciando proceso de Build & Push para Contenedor Ibiza${NC}" +echo "--------------------------------------------------------" + +# 1. Solicitar Tag +read -p "🏷️ Ingresa el tag/versión para la imagen (default: latest): " TAG +TAG=${TAG:-latest} + +FULL_IMAGE_NAME="$REGISTRY_URL/$IMAGE_NAME:$TAG" +LATEST_IMAGE_NAME="$REGISTRY_URL/$IMAGE_NAME:latest" + +echo -e "\n${YELLOW}📝 Configuración:${NC}" +echo " - Registry: $REGISTRY_URL" +echo " - Imagen: $FULL_IMAGE_NAME" +echo "--------------------------------------------------------" + +read -p "¿Continuar? (S/n): " CONFIRM +CONFIRM=${CONFIRM:-S} + +if [[ "$CONFIRM" != "S" && "$CONFIRM" != "s" ]]; then + echo -e "${RED}❌ Cancelado por el usuario.${NC}" + exit 1 +fi + +# 2. Construir Imagen +echo -e "\n${GREEN}🔨 Construyendo imagen...${NC}" +# Nos aseguramos de estar en el directorio raíz del proyecto +cd "$(dirname "$0")/.." || exit + +if docker build -t "$FULL_IMAGE_NAME" .; then + echo -e "${GREEN}✅ Build exitoso.${NC}" +else + echo -e "${RED}❌ Error en el Build.${NC}" + exit 1 +fi + +# 3. Subir Imagen +echo -e "\n${GREEN}bw 📤 Subiendo imagen a $REGISTRY_URL...${NC}" + +if docker push "$FULL_IMAGE_NAME"; then + echo -e "${GREEN}✅ Push exitoso: $FULL_IMAGE_NAME${NC}" +else + echo -e "${RED}❌ Error al subir imagen. ¿Docker tiene acceso al registry http?${NC}" + echo "Tip: Revisa /etc/docker/daemon.json para 'insecure-registries'" + exit 1 +fi + +# 4. Opcional: Subir también como 'latest' si se usó un tag específico +if [ "$TAG" != "latest" ]; then + read -p "¿Deseas etiquetar y subir también como ':latest'? (S/n): " UPDATE_LATEST + UPDATE_LATEST=${UPDATE_LATEST:-S} + + if [[ "$UPDATE_LATEST" == "S" || "$UPDATE_LATEST" == "s" ]]; then + docker tag "$FULL_IMAGE_NAME" "$LATEST_IMAGE_NAME" + docker push "$LATEST_IMAGE_NAME" + echo -e "${GREEN}✅ Tag 'latest' actualizado.${NC}" + fi +fi + +echo -e "\n${GREEN}🎉 ¡Todo listo! La imagen ya está en tu registro.${NC}" diff --git a/src/Models/Assignment.php b/src/Models/Assignment.php index 40a0a80..2484878 100644 --- a/src/Models/Assignment.php +++ b/src/Models/Assignment.php @@ -155,11 +155,12 @@ class Assignment extends BaseModel $sql = "SELECT a.*, u.full_name, u.username FROM assignments a INNER JOIN users u ON a.user_id = u.id - WHERE u.full_name LIKE :name OR u.username LIKE :name + WHERE u.full_name LIKE :name1 OR u.username LIKE :name2 ORDER BY a.start_date ASC"; $stmt = $this->db->prepare($sql); - $stmt->execute(['name' => "%$name%"]); + $term = "%$name%"; + $stmt->execute(['name1' => $term, 'name2' => $term]); return $stmt->fetchAll(); }