feat: Botón Guardar Todo en conceptos y mejoras Docker
Cambios realizados: - concept_view.php: Agregado botón 'Guardar Todo' arriba y abajo de la tabla, eliminado botón individual por fila - dashboard.php: Agregado endpoint save_all_concept_payments para guardar múltiples pagos - docker-entrypoint.sh: Corregidos permisos de volúmenes para ZimaOS/CasaOS (cambia dueño a www-data) - docker/Dockerfile: Corregida ruta del entrypoint - build-and-push.sh: Script interactivo para crear imagen Docker con opción de caché/sin caché Los cambios permiten guardar todos los pagos de conceptos de una sola vez y mejoran la compatibilidad con despliegues en ZimaOS.
This commit is contained in:
208
build-and-push.sh
Executable file
208
build-and-push.sh
Executable file
@@ -0,0 +1,208 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script interactivo para crear imagen Docker y subirla al registry
|
||||
# Uso: ./build-and-push.sh
|
||||
|
||||
set -e
|
||||
|
||||
# Colores para output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuración por defecto
|
||||
REGISTRY_URL="10.10.4.3:5000"
|
||||
IMAGE_NAME="condominio_ibiza"
|
||||
DOCKERFILE_PATH="docker/Dockerfile"
|
||||
PROJECT_DIR="/var/www/html/ibiza"
|
||||
|
||||
# Función para imprimir mensajes
|
||||
print_info() {
|
||||
echo -e "${BLUE}ℹ️ $1${NC}"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}✅ $1${NC}"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}❌ $1${NC}"
|
||||
}
|
||||
|
||||
# Verificar que estamos en el directorio correcto
|
||||
if [ ! -f "$DOCKERFILE_PATH" ]; then
|
||||
print_error "No se encontró el Dockerfile en $DOCKERFILE_PATH"
|
||||
print_info "Asegúrate de ejecutar este script desde el directorio raíz del proyecto"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Mostrar banner
|
||||
echo ""
|
||||
echo "╔════════════════════════════════════════════════════════╗"
|
||||
echo "║ 🐳 BUILD & PUSH - Condominio Ibiza Docker ║"
|
||||
echo "╚════════════════════════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
# Paso 1: Preguntar versión/tag
|
||||
print_info "Paso 1: Versión de la imagen"
|
||||
echo ""
|
||||
read -p "Ingresa la versión/tag (ej: v2.1, latest, o deja en blanco para 'latest'): " VERSION
|
||||
|
||||
if [ -z "$VERSION" ]; then
|
||||
VERSION="latest"
|
||||
fi
|
||||
|
||||
print_info "Versión seleccionada: $VERSION"
|
||||
echo ""
|
||||
|
||||
# Paso 2: Confirmar registry
|
||||
print_info "Paso 2: Configuración del Registry"
|
||||
echo ""
|
||||
read -p "Registry URL [$REGISTRY_URL]: " INPUT_REGISTRY
|
||||
REGISTRY_URL=${INPUT_REGISTRY:-$REGISTRY_URL}
|
||||
print_info "Registry: $REGISTRY_URL"
|
||||
echo ""
|
||||
|
||||
# Paso 3: Seleccionar modo de build
|
||||
print_info "Paso 3: Modo de construcción"
|
||||
echo ""
|
||||
echo "Selecciona el modo de build:"
|
||||
echo " 1) Con caché (más rápido, reutiliza capas anteriores)"
|
||||
echo " 2) Sin caché (--no-cache, fuerza reconstrucción completa)"
|
||||
echo ""
|
||||
read -p "Opción [1]: " BUILD_OPTION
|
||||
|
||||
USE_CACHE="s"
|
||||
if [ "$BUILD_OPTION" == "2" ]; then
|
||||
USE_CACHE="n"
|
||||
print_info "Modo seleccionado: Sin caché (build completo)"
|
||||
else
|
||||
print_info "Modo seleccionado: Con caché (build rápido)"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Mostrar resumen antes de comenzar
|
||||
echo ""
|
||||
echo "╔════════════════════════════════════════════════════════╗"
|
||||
echo "║ 📋 RESUMEN DE OPERACIÓN ║"
|
||||
echo "╠════════════════════════════════════════════════════════╣"
|
||||
echo "║ Imagen: $IMAGE_NAME:$VERSION"
|
||||
echo "║ Registry: $REGISTRY_URL"
|
||||
echo "║ Dockerfile: $DOCKERFILE_PATH"
|
||||
if [ "$USE_CACHE" == "n" ]; then
|
||||
echo "║ Modo: Sin caché (build completo)"
|
||||
else
|
||||
echo "║ Modo: Con caché (build rápido)"
|
||||
fi
|
||||
echo "╚════════════════════════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
read -p "¿Deseas continuar? (s/n): " CONFIRM
|
||||
if [[ $CONFIRM != "s" && $CONFIRM != "S" ]]; then
|
||||
print_warning "Operación cancelada por el usuario"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo ""
|
||||
print_info "🚀 Iniciando proceso..."
|
||||
echo ""
|
||||
|
||||
# Paso 4: Build de la imagen
|
||||
print_info "Paso 4: Construyendo imagen Docker..."
|
||||
|
||||
if [ "$USE_CACHE" == "n" ]; then
|
||||
echo " Comando: docker build --no-cache -t $IMAGE_NAME:$VERSION -f $DOCKERFILE_PATH ."
|
||||
echo ""
|
||||
if docker build --no-cache -t "$IMAGE_NAME:$VERSION" -f "$DOCKERFILE_PATH" .; then
|
||||
print_success "Imagen construida exitosamente (sin caché): $IMAGE_NAME:$VERSION"
|
||||
else
|
||||
print_error "Error al construir la imagen"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo " Comando: docker build -t $IMAGE_NAME:$VERSION -f $DOCKERFILE_PATH ."
|
||||
echo ""
|
||||
if docker build -t "$IMAGE_NAME:$VERSION" -f "$DOCKERFILE_PATH" .; then
|
||||
print_success "Imagen construida exitosamente: $IMAGE_NAME:$VERSION"
|
||||
else
|
||||
print_error "Error al construir la imagen"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Paso 5: Taggear para el registry
|
||||
print_info "Paso 5: Taggeando imagen para registry..."
|
||||
echo " Comando: docker tag $IMAGE_NAME:$VERSION $REGISTRY_URL/$IMAGE_NAME:$VERSION"
|
||||
echo ""
|
||||
|
||||
if docker tag "$IMAGE_NAME:$VERSION" "$REGISTRY_URL/$IMAGE_NAME:$VERSION"; then
|
||||
print_success "Imagen taggeada: $REGISTRY_URL/$IMAGE_NAME:$VERSION"
|
||||
else
|
||||
print_error "Error al taggear la imagen"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Paso 6: Subir al registry
|
||||
read -p "¿Deseas subir la imagen al registry ahora? (s/n): " PUSH_CONFIRM
|
||||
|
||||
if [[ $PUSH_CONFIRM == "s" || $PUSH_CONFIRM == "S" ]]; then
|
||||
print_info "Paso 6: Subiendo imagen al registry..."
|
||||
echo " Comando: docker push $REGISTRY_URL/$IMAGE_NAME:$VERSION"
|
||||
echo ""
|
||||
|
||||
if docker push "$REGISTRY_URL/$IMAGE_NAME:$VERSION"; then
|
||||
print_success "Imagen subida exitosamente al registry"
|
||||
else
|
||||
print_error "Error al subir la imagen al registry"
|
||||
print_warning "Verifica que el registry esté accesible en $REGISTRY_URL"
|
||||
print_info "Puedes intentar subir manualmente con: docker push $REGISTRY_URL/$IMAGE_NAME:$VERSION"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
print_warning "Imagen NO subida al registry"
|
||||
print_info "Puedes subirla manualmente después con:"
|
||||
echo " docker push $REGISTRY_URL/$IMAGE_NAME:$VERSION"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Paso 7: Limpiar imágenes locales (opcional)
|
||||
read -p "¿Deseas eliminar las imágenes locales para liberar espacio? (s/n): " CLEANUP_CONFIRM
|
||||
|
||||
if [[ $CLEANUP_CONFIRM == "s" || $CLEANUP_CONFIRM == "S" ]]; then
|
||||
print_info "Limpiando imágenes locales..."
|
||||
docker rmi "$IMAGE_NAME:$VERSION" "$REGISTRY_URL/$IMAGE_NAME:$VERSION" 2>/dev/null || true
|
||||
print_success "Imágenes locales eliminadas"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "╔════════════════════════════════════════════════════════╗"
|
||||
echo "║ ✅ PROCESO COMPLETADO ║"
|
||||
echo "╠════════════════════════════════════════════════════════╣"
|
||||
echo "║ Imagen: $REGISTRY_URL/$IMAGE_NAME:$VERSION"
|
||||
echo "╚════════════════════════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
print_info "Para usar esta imagen en ZimaOS/CasaOS:"
|
||||
echo ""
|
||||
echo "1. Actualiza tu archivo ibiza.yaml:"
|
||||
echo " image: $REGISTRY_URL/$IMAGE_NAME:$VERSION"
|
||||
echo ""
|
||||
echo "2. Reinicia el contenedor en ZimaOS/CasaOS"
|
||||
echo ""
|
||||
echo "3. Verifica los logs:"
|
||||
echo " docker logs condominio_ibiza"
|
||||
echo ""
|
||||
|
||||
print_success "¡Listo!"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user