#!/bin/bash # ================================================== # Script para construir y subir una imagen Docker. # # Uso: # ./deploy.sh # # El script te preguntará interactivamente: # - Tag para la imagen # - Si deseas usar caché al construir # ================================================== set -e # --- Configuración --- REGISTRY_URL="10.10.4.3:5000" IMAGE_NAME="bot-lastwar" # Preguntar por el tag si no se proporciona como argumento if [ -n "$1" ]; then TAG="$1" else read -p "Introduce el tag para la imagen [latest]: " TAG TAG="${TAG:-latest}" fi # Preguntar si quiere usar caché read -p "¿Usar caché al construir? (s/n) [n]: " USE_CACHE if [ "${USE_CACHE,,}" = "s" ]; then BUILD_CACHE_FLAG="" CACHE_STATUS="con caché" else BUILD_CACHE_FLAG="--no-cache" CACHE_STATUS="sin caché" fi # --- Fin de la Configuración --- # Nombres completos de la imagen LOCAL_IMAGE_NAME="${IMAGE_NAME}:${TAG}" REMOTE_IMAGE_NAME="${REGISTRY_URL}/${IMAGE_NAME}:${TAG}" # Cambiar al directorio raíz del proyecto (un nivel arriba de este script) cd "$(dirname "$0")/.." echo "==========================================" echo "Directorio de trabajo: $(pwd)" echo "Construyendo imagen: ${LOCAL_IMAGE_NAME}" echo "Opción de build: ${CACHE_STATUS}" echo "Destino del registry: ${REMOTE_IMAGE_NAME}" echo "==========================================" # 1. Construir la imagen Docker echo "Paso 1: Construyendo imagen Docker ${CACHE_STATUS}..." docker build ${BUILD_CACHE_FLAG} -t "${LOCAL_IMAGE_NAME}" -f docker/Dockerfile . # 2. Etiquetar la imagen para el registry echo "Paso 2: Etiquetando imagen como ${REMOTE_IMAGE_NAME}..." docker tag "${LOCAL_IMAGE_NAME}" "${REMOTE_IMAGE_NAME}" # 3. Subir la imagen al registry echo "Paso 3: Subiendo imagen al registry..." docker push "${REMOTE_IMAGE_NAME}" echo "==========================================" echo "✅ Imagen subida exitosamente:" echo "${REMOTE_IMAGE_NAME}" echo "=========================================="