Upload files to "/"
This commit is contained in:
186
install_docker.sh
Normal file
186
install_docker.sh
Normal file
@@ -0,0 +1,186 @@
|
||||
#!/bin/bash
|
||||
|
||||
##############################################
|
||||
# Docker Installation Script for Ubuntu
|
||||
# Installa la versione ufficiale più recente
|
||||
# di Docker Engine su Ubuntu Linux
|
||||
##############################################
|
||||
|
||||
set -e # Esce se un comando fallisce
|
||||
|
||||
# Colori per l'output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Funzione per stampare messaggi
|
||||
print_header() {
|
||||
echo -e "\n${GREEN}=== $1 ===${NC}\n"
|
||||
}
|
||||
|
||||
print_info() {
|
||||
echo -e "${GREEN}✓${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}✗${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠${NC} $1"
|
||||
}
|
||||
|
||||
# Installazione facoltativa di Portainer
|
||||
install_portainer() {
|
||||
local repo_url="https://git.pyconetwork.it/francesco/portainer.git"
|
||||
local target_dir="/opt/portainer"
|
||||
|
||||
print_header "Installazione di Portainer (opzionale)"
|
||||
|
||||
if ! command -v git &> /dev/null; then
|
||||
print_warning "git non trovato. Installazione in corso"
|
||||
apt-get install -y git
|
||||
print_info "git installato"
|
||||
fi
|
||||
|
||||
if [ -d "$target_dir/.git" ]; then
|
||||
print_warning "Repository gia presente in $target_dir. Aggiorno"
|
||||
git -C "$target_dir" pull
|
||||
else
|
||||
rm -rf "$target_dir"
|
||||
git clone "$repo_url" "$target_dir"
|
||||
fi
|
||||
|
||||
if [ -f "$target_dir/docker-compose.yml" ] || [ -f "$target_dir/compose.yaml" ]; then
|
||||
print_info "Avvio dei servizi con Docker Compose"
|
||||
docker compose -f "$target_dir/docker-compose.yml" up -d 2>/dev/null || \
|
||||
docker compose -f "$target_dir/compose.yaml" up -d
|
||||
print_info "Portainer avviato"
|
||||
return
|
||||
fi
|
||||
|
||||
if [ -f "$target_dir/install.sh" ]; then
|
||||
print_info "Esecuzione dello script di installazione del repository"
|
||||
bash "$target_dir/install.sh"
|
||||
print_info "Installazione completata"
|
||||
return
|
||||
fi
|
||||
|
||||
print_warning "Nessun file di avvio trovato (docker-compose.yml/compose.yaml/install.sh)"
|
||||
print_warning "Controlla il repository in $target_dir per i passi manuali"
|
||||
}
|
||||
|
||||
# Verifica che lo script sia eseguito con privilegi sudo
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
print_error "Questo script deve essere eseguito con sudo"
|
||||
echo "Usa: sudo bash install_docker.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verifica che il sistema sia Ubuntu/Debian
|
||||
if ! command -v lsb_release &> /dev/null; then
|
||||
print_error "lsb_release non trovato. Assicurati di usare Ubuntu o Debian"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
OS_VERSION=$(lsb_release -cs)
|
||||
print_header "Installazione di Docker su Ubuntu ($OS_VERSION)"
|
||||
|
||||
# Step 1: Aggiornamento dei repository e installazione dipendenze
|
||||
print_header "Step 1: Aggiornamento del sistema e installazione dipendenze"
|
||||
apt-get update
|
||||
apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
|
||||
print_info "Dipendenze installate"
|
||||
|
||||
# Step 2: Aggiunta della GPG key di Docker
|
||||
print_header "Step 2: Aggiunta della GPG key ufficiale di Docker"
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
print_info "GPG key aggiunta"
|
||||
|
||||
# Step 3: Aggiunta del repository di Docker
|
||||
print_header "Step 3: Configurazione del repository di Docker"
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
apt-get update
|
||||
print_info "Repository di Docker aggiunto"
|
||||
|
||||
# Step 4: Installazione di Docker
|
||||
print_header "Step 4: Installazione di Docker Engine, CLI e containerd"
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
print_info "Docker installato con successo"
|
||||
|
||||
# Step 5: Avvio e abilitazione del servizio Docker
|
||||
print_header "Step 5: Configurazione del servizio Docker"
|
||||
systemctl start docker
|
||||
systemctl enable docker
|
||||
print_info "Servizio Docker avviato e abilitato al boot"
|
||||
|
||||
# Step 6: Configurazione permessi per l'utente corrente
|
||||
print_header "Step 6: Configurazione permessi per l'utente Docker"
|
||||
|
||||
# Se lo script è stato eseguito con sudo da un utente normale
|
||||
if [ ! -z "$SUDO_USER" ]; then
|
||||
usermod -aG docker "$SUDO_USER"
|
||||
print_info "Utente $SUDO_USER aggiunto al gruppo docker"
|
||||
print_warning "Effettua il logout e login per attivare i permessi del gruppo docker"
|
||||
else
|
||||
print_warning "Lo script è stato eseguito come root. Per usare Docker senza sudo:"
|
||||
print_warning " 1. Crea un utente non-root"
|
||||
print_warning " 2. Esegui: sudo usermod -aG docker <username>"
|
||||
print_warning " 3. Effettua il logout/login"
|
||||
fi
|
||||
|
||||
# Step 7: Verifica dell'installazione
|
||||
print_header "Step 7: Verifica dell'installazione"
|
||||
|
||||
# Versione di Docker
|
||||
DOCKER_VERSION=$(docker --version)
|
||||
print_info "Docker version: $DOCKER_VERSION"
|
||||
|
||||
# Verifica che il servizio sia attivo
|
||||
if systemctl is-active --quiet docker; then
|
||||
print_info "Servizio Docker: ATTIVO"
|
||||
else
|
||||
print_error "Servizio Docker: INATTIVO"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test con hello-world
|
||||
print_header "Esecuzione del test con l'immagine hello-world"
|
||||
if [ ! -z "$SUDO_USER" ]; then
|
||||
sudo -u "$SUDO_USER" docker run --rm hello-world > /dev/null 2>&1
|
||||
else
|
||||
docker run --rm hello-world > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
print_info "Test hello-world completato con successo"
|
||||
else
|
||||
print_warning "Il test hello-world ha riscontrato problemi"
|
||||
fi
|
||||
|
||||
# Step 8: Installazione facoltativa di Portainer
|
||||
read -r -p "Vuoi installare Portainer? [y/N]: " INSTALL_PORTAINER
|
||||
case "$INSTALL_PORTAINER" in
|
||||
y|Y|yes|YES)
|
||||
install_portainer
|
||||
;;
|
||||
*)
|
||||
print_info "Installazione di Portainer saltata"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Riepilogo finale
|
||||
print_header "Installazione completata!"
|
||||
echo -e "${GREEN}Docker è pronto per l'uso${NC}"
|
||||
echo ""
|
||||
echo "Comandi utili:"
|
||||
echo " docker --version # Mostra la versione di Docker"
|
||||
echo " docker ps # Elenca i container attivi"
|
||||
echo " docker images # Elenca le immagini disponibili"
|
||||
echo " docker run <image> # Esegui una nuova immagine"
|
||||
echo " docker compose --version # Mostra la versione di Docker Compose"
|
||||
echo ""
|
||||
print_info "Documentazione: https://docs.docker.com"
|
||||
Reference in New Issue
Block a user