From 416e7a27a7d2f574fa319d6d6c040fce78062923 Mon Sep 17 00:00:00 2001 From: Carmine Savino Date: Fri, 23 Jan 2026 10:16:11 +0100 Subject: [PATCH] Aggiorna il workflow di deploy e aggiungi script di manutenzione per la gestione dello spazio Docker --- .gitea/workflows/deploy.yml | 110 +++----------------------- maintenance-scripts/README.md | 66 ++++++++++++++++ maintenance-scripts/cleanup-docker.sh | 34 ++++++++ 3 files changed, 112 insertions(+), 98 deletions(-) create mode 100644 maintenance-scripts/README.md create mode 100644 maintenance-scripts/cleanup-docker.sh diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 5c252ae..8cc22cc 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,107 +1,21 @@ -name: Build and Deploy - -on: - push: - branches: - - main - - master - pull_request: - branches: - - main - - master +name: Deploy +on: [push] jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Build application - run: npm run build - - - name: Upload build artifacts - uses: actions/upload-artifact@v4 - with: - name: dist - path: dist/ - deploy: - needs: build runs-on: ubuntu-latest - if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master' + + container: + image: ghcr.io/catthehacker/ubuntu:act-20.04 steps: - - name: Checkout code - uses: actions/checkout@v4 + - name: Checkout del codice + uses: actions/checkout@v3 - - name: Download build artifacts - uses: actions/download-artifact@v4 - with: - name: dist - path: dist/ - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build Docker image + - name: Deploy run: | - docker build -t vue-demo:latest . - docker tag vue-demo:latest vue-demo:${{ github.sha }} + docker compose down --remove-orphans + docker compose up -d --build - - name: Save Docker image - run: docker save vue-demo:latest | gzip > vue-demo-image.tar.gz - - # Deploy su server con Traefik via SSH - - name: Deploy to server - uses: appleboy/scp-action@master - with: - host: ${{ secrets.SERVER_HOST }} - username: ${{ secrets.SERVER_USER }} - key: ${{ secrets.SSH_PRIVATE_KEY }} - source: "docker-compose.yml,vue-demo-image.tar.gz" - target: "${{ secrets.DEPLOY_PATH }}" - - - name: Create .env file on server - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.SERVER_HOST }} - username: ${{ secrets.SERVER_USER }} - key: ${{ secrets.SSH_PRIVATE_KEY }} - script: | - cd ${{ secrets.DEPLOY_PATH }} - echo "DOMAIN=${{ secrets.DOMAIN }}" > .env - - - name: Deploy with Docker and Traefik - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.SERVER_HOST }} - username: ${{ secrets.SERVER_USER }} - key: ${{ secrets.SSH_PRIVATE_KEY }} - script: | - cd ${{ secrets.DEPLOY_PATH }} - - # Carica l'immagine Docker - docker load < vue-demo-image.tar.gz - - # Crea rete Traefik se non esiste - docker network inspect traefik-network >/dev/null 2>&1 || docker network create traefik-network - - # Ferma e rimuovi container precedente - docker-compose down - - # Avvia nuovo container - docker-compose up -d - - # Cleanup vecchie immagini - docker image prune -f + - name: Pulizia + run: docker system prune -f \ No newline at end of file diff --git a/maintenance-scripts/README.md b/maintenance-scripts/README.md new file mode 100644 index 0000000..4ecf73a --- /dev/null +++ b/maintenance-scripts/README.md @@ -0,0 +1,66 @@ +# Script di Manutenzione + +Script utili per la gestione e manutenzione del server. + +## cleanup-docker.sh + +Script per liberare spazio Docker rimuovendo: +- Container fermati +- Immagini non utilizzate +- Volumi orfani +- Network non utilizzati + +### Utilizzo + +```bash +# Rendi eseguibile +chmod +x cleanup-docker.sh + +# Esegui manualmente +./cleanup-docker.sh +``` + +### Automazione con Cron + +Per eseguire la pulizia automaticamente ogni settimana: + +```bash +# Apri crontab +crontab -e + +# Aggiungi questa riga per eseguire ogni domenica alle 3:00 +0 3 * * 0 /opt/vue-demo/cleanup-docker.sh >> /var/log/docker-cleanup.log 2>&1 +``` + +## Monitoraggio Spazio + +### Verifica spazio disco +```bash +df -h +``` + +### Verifica spazio Docker +```bash +docker system df +docker system df -v # output dettagliato +``` + +### Analizza dimensioni immagini +```bash +docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" +``` + +### Trova container più grandi +```bash +docker ps -s +``` + +## Limiti Raccomandati + +Con 8GB di spazio totale: +- Sistema operativo: ~2-3GB +- Docker + Traefik: ~500MB +- Applicazioni: ~2-3GB +- Spazio libero buffer: ~2GB minimo + +**Alert**: Se lo spazio libero scende sotto 1GB, esegui subito la pulizia Docker. diff --git a/maintenance-scripts/cleanup-docker.sh b/maintenance-scripts/cleanup-docker.sh new file mode 100644 index 0000000..daa122b --- /dev/null +++ b/maintenance-scripts/cleanup-docker.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Script di manutenzione per liberare spazio Docker +# Esegui periodicamente per mantenere pulito il server + +echo "=== Docker Space Cleanup ===" +echo "" + +echo "Spazio prima della pulizia:" +docker system df + +echo "" +echo "Rimuovo container fermati..." +docker container prune -f + +echo "" +echo "Rimuovo immagini non utilizzate..." +docker image prune -a -f + +echo "" +echo "Rimuovo volumi non utilizzati..." +docker volume prune -f + +echo "" +echo "Rimuovo network non utilizzati..." +docker network prune -f + +echo "" +echo "Spazio dopo la pulizia:" +docker system df + +echo "" +echo "Spazio disco totale:" +df -h /