Correcciones finales: Carga de entorno en webhook, rutas en entrypoint y búsqueda SQL

This commit is contained in:
2026-02-01 01:25:14 -06:00
parent 4d07b4b14c
commit 300a5bede4
6 changed files with 91 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
FROM debian:bullseye-slim FROM debian:bookworm-slim
# Evitar interacciones durante instalación # Evitar interacciones durante instalación
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive

View File

@@ -24,12 +24,20 @@ Aplicación web integral para la gestión automatizada de rotaciones de turnos,
### Opción A: Docker Compose / Portainer ### Opción A: Docker Compose / Portainer
1. Clona el repositorio. 1. Clona el repositorio.
2. Construye la imagen: 2. Construye la imagen manualmente o usa el script interactivo:
```bash ```bash
docker build -t contenedor-ibiza . ./scripts/build_push.sh
``` ```
3. Ejecuta con las variables de entorno necesarias (ver `contenedor.yaml` como ejemplo). 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 ### Opción B: CasaOS / ZimaOS
1. Utiliza la función de "Importar" y selecciona el archivo `contenedor.yaml`. 1. Utiliza la función de "Importar" y selecciona el archivo `contenedor.yaml`.

View File

@@ -2,7 +2,7 @@
set -e set -e
# Definir ruta del archivo .env # 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 # Siempre regenerar el archivo .env para asegurar que las variables de entorno (YAML) tengan prioridad
echo "Generating .env file from environment variables..." echo "Generating .env file from environment variables..."

View File

@@ -2,6 +2,10 @@
require_once __DIR__ . '/../../vendor/autoload.php'; require_once __DIR__ . '/../../vendor/autoload.php';
use App\Services\TelegramBot; use App\Services\TelegramBot;
use App\Config\Env;
// Cargar variables de entorno
Env::load();
// Recibir solicitud webhook // Recibir solicitud webhook
$input = file_get_contents('php://input'); $input = file_get_contents('php://input');

72
scripts/build_push.sh Executable file
View File

@@ -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}"

View File

@@ -155,11 +155,12 @@ class Assignment extends BaseModel
$sql = "SELECT a.*, u.full_name, u.username $sql = "SELECT a.*, u.full_name, u.username
FROM assignments a FROM assignments a
INNER JOIN users u ON a.user_id = u.id 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"; ORDER BY a.start_date ASC";
$stmt = $this->db->prepare($sql); $stmt = $this->db->prepare($sql);
$stmt->execute(['name' => "%$name%"]); $term = "%$name%";
$stmt->execute(['name1' => $term, 'name2' => $term]);
return $stmt->fetchAll(); return $stmt->fetchAll();
} }