Tutorial Tecnico
Come fare il deploy di un’applicazione Docker su DigitalOcean in meno di 10 minuti
In un ecosistema cloud spesso troppo complesso, DigitalOcean si distingue per la sua semplicità scalabile.
Per un Senior Developer, poter passare da un’immagine locale a un’istanza di produzione in pochi minuti rappresenta un vantaggio competitivo notevole, riducendo drasticamente il tempo dedicato alla gestione infrastrutturale.
Step 1: Creazione del Droplet (VPS)
- Accedere al pannello di controllo e selezionare la voce Marketplace.
- Scegliere l'immagine ufficiale Docker on Ubuntu. Questa opzione pre-configura il runtime Docker, evitando installazioni manuali e garantendo un ambiente standardizzato.
- Selezionare il piano Basic con CPU condivisa e scegliere il data center geograficamente più vicino all'utenza finale per minimizzare la latenza.
Step 2: Configurazione Sicurezza Avanzata
Accesso SSH: Durante la creazione, caricare la propria chiave pubblica. L'uso delle chiavi SSH è lo standard di sicurezza raccomandato per evitare le vulnerabilità legate alle password e agli attacchi di brute force.
Cloud Firewall: Configurare le regole di rete per consentire il traffico esclusivamente sulle porte 22 (SSH), 80 (HTTP) e 443 (HTTPS). È consigliabile restringere l'accesso SSH solo al proprio indirizzo IP statico, se possibile, per un ulteriore livello di protezione.
Step 3: Deploy dell'Applicazione
Una volta stabilita la connessione via terminale, è sufficiente clonare il repository e avviare i container. Consiglio di usare docker-compose per gestire la persistenza dei dati tramite i volumi:
cd tuo-repo
docker-compose up -d --build
Step 4: Ottimizzazione delle Immagini Docker
In un ambiente di produzione, la dimensione dell'immagine conta. Un'immagine più piccola significa deploy più veloci e un minor consumo di spazio disco sul Droplet. Raccomando vivamente l'uso di Multi-stage Builds per separare l'ambiente di build da quello di runtime. Ad esempio, per un'applicazione Node.js, possiamo usare una base Alpine Linux per ridurre l'immagine finale da 1GB a meno di 100MB.
Inoltre, è fondamentale non far girare i container come utente root. Definire un utente non privilegiato all'interno del Dockerfile è una delle "best practice" di sicurezza più ignorate ma essenziali per proteggere l'host da potenziali breakout del container.
Step 5: Automazione con GitHub Actions (CI/CD)
Fare il deploy manuale via SSH è utile per i test, ma per un progetto professionale serve l'automazione. Possiamo configurare una GitHub Action che, ad ogni push sul branch main, esegua i seguenti passaggi:
- Build: Creazione dell'immagine Docker e push su DigitalOcean Container Registry.
- Deploy: Connessione sicura via SSH al Droplet ed esecuzione di uno script di pull e restart del container.
Questo approccio elimina l'errore umano e garantisce che la versione in produzione sia sempre allineata con l'ultimo codice testato e approvato.
Step 6: Reverse Proxy e SSL con Nginx
Per esporre l'applicazione sul web in modo sicuro, non dovremmo mai puntare direttamente alle porte del container. L'uso di un Reverse Proxy come Nginx o Caddy è lo standard. Nginx permette di gestire il terminatore SSL (tramite Let's Encrypt e Certbot) e di bilanciare il carico tra più container se necessario.
Configurare un file di configurazione Nginx per inoltrare il traffico dalla porta 80/443 alla porta interna del container (es. 3000) aggiunge un ulteriore livello di astrazione e sicurezza, permettendo anche di gestire facilmente i domini e i sottodomini direttamente dal Droplet.
Monitoraggio e Scalabilità
Una volta online, è fondamentale attivare il DigitalOcean Monitoring. È un servizio gratuito che fornisce grafici in tempo reale su CPU, RAM e traffico di rete. Possiamo impostare degli alert che ci inviano una notifica via email o Slack se il Droplet supera l'80% di utilizzo delle risorse, permettendoci di scalare preventivamente (Vertical Scaling) prima che l'applicazione diventi instabile.
Scalabilità: Qualora il traffico dovesse aumentare, la piattaforma permette di scalare le risorse con pochi clic. È possibile iniziare subito sfruttando i 200 dollari di bonus disponibili tramite questo link.