Mi sono ritrovato a fare i conti con il mantenimento di un sito che gira ancora su PHP 5.4 in un hosting condiviso, dove quindi non è possibile fare l’upgrade dell’interprete.
Per ricrearmi in locale le stesse condizioni di environment presenti in produzione la scelta è stata Docker.
Ed è stata una droga. Un tunnel che mi ha risucchiato.
In rete è pieno di tutorial su come iniziare con Docker, per cui non mi dilungo.
Quello che vorrei comunicare qui sono i vantaggi che questa scelta ha portato alle mie operazioni quotidiane di DevOps.
Perché virtualizzare un’intera macchina, quando sarebbe possibile virtualizzare solamente una piccola parte di essa? I container consentono allo sviluppatore di pacchettizzare una applicazione con tutte le parti necessarie (le librerie e altre risorse correlate) e consegnarla appunto come un unico pacchetto.
Al contrario di una virtual machine (che crea un intero sistema operativo virtuale), Docker consente alle applicazioni di usare lo stesso kernel Linux del sistema host su cui stanno girando e richiede soltanto che le applicazioni vengano consegnate senza elementi che risiedano già sulla macchina che le ospita. Per questo motivo i vantaggi più grandi di Docker sono la riduzione dello spazio occupato dall’applicazione, l’aumento delle prestazioni e l’isolamento.
Ecco quindi che mi sono lanciato nella mischia creando le mie immagini, specifiche per le questioni che affronto ogni giorno:
Questo è il un mio classico docker-compose.yml:
Segnalo comunque che per non reinventare la ruota ogni volta, in ambito Drupal ci sono due iniziative che meritano sicuramente un approfondimento: