Aggiorna il workflow di deploy e aggiungi script di manutenzione per la gestione dello spazio Docker
Some checks failed
Deploy / deploy (push) Failing after 1m22s

This commit is contained in:
2026-01-23 10:16:11 +01:00
parent 2eddd152d7
commit 416e7a27a7
3 changed files with 112 additions and 98 deletions

View File

@@ -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

View File

@@ -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.

View File

@@ -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 /