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.
209 lines
7.0 KiB
Bash
Executable File
209 lines
7.0 KiB
Bash
Executable File
#!/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 ""
|