#!/bin/bash # update-compose-image.sh # Script per aggiornare i file docker-compose.yml per usare l'immagine dal registry # Uso: ./update-compose-image.sh # Esempio: ./update-compose-image.sh registry.example.com:5000 orchestrator-app latest set -e # ==================== CONFIGURAZIONE ==================== if [ "$#" -ne 3 ]; then echo "Uso: $0 " echo "" echo "Parametri:" echo " registry_url - URL del registry privato" echo " image_name - Nome dell'immagine" echo " tag - Tag dell'immagine" echo "" echo "Esempio:" echo " $0 registry.example.com:5000 orchestrator-app latest" echo "" echo "Lo script aggiornerà i file docker-compose.yml in vm1/ e vm2/" echo "sostituendo 'build: .' con 'image: registry_url/image_name:tag'" exit 1 fi REGISTRY_URL=$1 IMAGE_NAME=$2 TAG=$3 FULL_IMAGE_NAME="${REGISTRY_URL}/${IMAGE_NAME}:${TAG}" # Directory dei progetti VM1_DIR="/home/alex/devel/proxmox-ha-setup/vm1" VM2_DIR="/home/alex/devel/proxmox-ha-setup/vm2" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' CYAN='\033[0;36m' NC='\033[0m' # ==================== FUNZIONI ==================== print_success() { echo -e "${GREEN}✓ $1${NC}"; } print_warning() { echo -e "${YELLOW}⚠ $1${NC}"; } print_error() { echo -e "${RED}✗ $1${NC}"; } print_info() { echo -e "${CYAN}ℹ $1${NC}"; } update_compose_file() { local compose_file=$1 local backup_file="${compose_file}.backup" if [ ! -f "$compose_file" ]; then print_warning "File non trovato: $compose_file" return 1 fi # Crea backup cp "$compose_file" "$backup_file" print_info "Backup creato: $backup_file" # Sostituisci 'build: .' con 'image: ...' sed -i "s|build: \.|image: ${FULL_IMAGE_NAME}|g" "$compose_file" print_success "Aggiornato: $compose_file" return 0 } # ==================== SCRIPT PRINCIPALE ==================== echo -e "${BLUE}================================================${NC}" echo -e "${BLUE}AGGIORNAMENTO DOCKER-COMPOSE FILES${NC}" echo -e "${BLUE}================================================${NC}" echo "" print_info "Immagine da utilizzare: ${CYAN}$FULL_IMAGE_NAME${NC}" echo "" # Aggiorna vm1/docker-compose.yml if [ -f "$VM1_DIR/docker-compose.yml" ]; then print_info "Aggiornamento $VM1_DIR/docker-compose.yml..." update_compose_file "$VM1_DIR/docker-compose.yml" else print_warning "File non trovato: $VM1_DIR/docker-compose.yml" fi echo "" # Aggiorna vm2/docker-compose.yml if [ -f "$VM2_DIR/docker-compose.yml" ]; then print_info "Aggiornamento $VM2_DIR/docker-compose.yml..." update_compose_file "$VM2_DIR/docker-compose.yml" else print_warning "File non trovato: $VM2_DIR/docker-compose.yml" fi echo "" echo -e "${BLUE}================================================${NC}" echo -e "${GREEN}✓ Aggiornamento completato!${NC}" echo -e "${BLUE}================================================${NC}" echo "" print_info "I file docker-compose.yml ora usano: ${CYAN}$FULL_IMAGE_NAME${NC}" print_info "I file di backup sono stati creati con estensione .backup" echo "" print_warning "Ricordati di fare il pull dell'immagine sulle VM:" print_info " ssh root@192.168.1.201 'cd /opt/myapp && docker pull $FULL_IMAGE_NAME'" print_info " ssh root@192.168.1.202 'cd /opt/myapp && docker pull $FULL_IMAGE_NAME'" echo ""