Qualche mese fa abbiamo parlato di LaraDock, un ottimo ambiente di lavoro che invece di affidarsi a Vagrant e VM fa uso di Docker per preparare tutto il necessario ad essere operativi.
Indubbiamente un progetto interessante: ha una marea di servizi già pronti ad essere usati e configurati.
Tutti quei servizi e quei file di configurazione sterminati mi hanno fatto riflettere. Mi ritrovo spesso a dover fare delle prove, anche piuttosto basilari. Altre volte mi ritrovo a voler configurare da zero un ambiente di lavoro per un progetto: non voglio mettermi a dover rimuovere tutto quello di cui non ho bisogno. Volendo usare LaraDock, la lista di servizi da rimuovere sarebbe infatti notevole.
Ho così iniziato a lavorare ad un ambiente “minimalista” per Laravel, basato su Docker, e sono arrivato a…
DoMinEnv!
Il risultato di questi miei esperimenti è DoMinEnv, un’abbreviazione di “Docker Minimal Environments”. La filosofia di fondo è semplice e si riassume in due semplici concetti:
- nessun servizio superfluo, solo il minimo indispensabile per essere up and running in poco tempo;
- voglio fare in modo che sia tutto pronto con un solo comando;
Se si vuole provarlo, è possibile prendere DoMinEnv da qui. Di default, include e configura autonomamente:
- PHP7.1;
- MySQL;
- Nginx;
- Composer;
Installazione
DoMinEnv è stato creato in modo tale da avere soltanto due prerequisiti:
- Git;
- Docker + Docker Compose;
… e nulla di più!
Una volta clonato il repository non bisogna fare altro che avviare lo script ./init
, il quale si occupa di inizializzare tutto l’ambiente di lavoro. Se è la prima volta che stiamo avviando DoMinEnv, tocca pazientare qualche minuto: lo script di setup infatti capisce se è già stato creato un progetto Laravel, e se non trovato ne crea uno.
Inoltre, se è la prima volta che avviamo l’ambiente di lavoro, Docker si prende del tempo in più per scaricare le varie immagini (PHP, MySQL…) di cui ha bisogno. Questa procedura comunque avviene soltanto la prima volta. Già dal secondo uso, l’avvio richiede appena qualche secondo!
Uso
Una volta completata la fase di inizializzazione,