La popolarità di Docker come strumento di sviluppo è in ascesa. Docker ha dato una nuova vita nel movimento del contenitore. Agli sviluppatori piace usarlo perché è veloce e facile da apprendere. Aiuta i team di sviluppo a condividere ambienti standard senza preoccuparsi di perdere tempo e risorse.
Gli sviluppatori possono impostare l'ambiente desiderato in un contenitore Docker, salvare il contenitore come immagine e condividerlo facilmente con i loro team di sviluppo. Il processo funziona perfettamente per un singolo contenitore. Tuttavia, gli ambienti multi-container sono più difficili da mantenere. Docker Compose fornisce la soluzione.
Con Docker Compose, gli sviluppatori possono definire un file YAML per impostare la configurazione per più servizi. Quindi possono avviare i servizi multi-container con un unico comando. Semplifica il processo di lavoro con applicazioni multi-container.
Prerequisito
Presumo che tu abbia una comprensione di base di Docker. Altrimenti, guarda Come installare e utilizzare Docker su Ubuntu. Gli esempi usano WordPress, Mysql, Flask e Python. Tuttavia, non è necessaria alcuna conoscenza preliminare di questi strumenti.
Processo di compositore Docker: a colpo d'occhio
- Definire l'ambiente dell'applicazione: Usa Dockerfile per definire l'ambiente dell'app per renderlo facilmente riproducibile.
- Definisci l'ambiente di composizione Docker: Usa docker-compose.YML per definire i servizi nell'applicazione.
- Esegui applicazione: Usa Docker-Opse Up per eseguire l'applicazione multi-contener.
Esempio di file di compositore Docker
Mysql_root_password: rootpassword123 |
Mysql_database: wordpress |
Mysql_user: wordpress_user |
Mysql_password: wordpress_password |
Immagine: WordPress: ultimo |
Wordpress_db_host: DB: 3306 |
Wordpress_db_user: wordpress_user |
Wordpress_db_password: wordpress_password |
Se il suddetto docker viene composto.Il file YML è invocato con Docker up, creerà un servizio WordPress che si collega a un servizio di database MySQL.
Comandi di compositore Docker
Puoi usare docker -compose -help Per trovare il comando Docker Compose
Quando utilizzare Docker Composi?
Attualmente, Docker viene utilizzato principalmente in ambienti di sviluppo. Alcuni degli usi popolari di Docker Compose sono:
1. Prototipazione e sviluppo
Il processo di prototipazione e sviluppo dell'applicazione viene rallentato a causa della mancanza di ambienti standard. Gli sviluppatori spesso devono perdere tempo a creare lo stesso ambiente più volte. Inoltre, la lettura delle guide per impostare i parametri dell'ambiente è richiesto dal tempo.
Docker composizioni semplifica il processo. Una volta configurato un ambiente, i team di sviluppo possono condividere i file Docker all'interno dell'organizzazione. Può risparmiare un'enorme quantità di tempo sprecata sui problemi di gestione della configurazione.
2. Test e automazione dei processi
Integrazione continua e consegna continua (CI/CD) stanno diventando processi standard negli ambienti di sviluppo agili di oggi. Il test automatizzato è un componente importante di CI/CD. Docker Compose aiuta a definire il processo di test automatizzato. Tutte le complicazioni dell'avvio di nuovi servizi possono essere ordinatamente inserite in file di configurazione Docker. I tester possono utilizzare questi file per accendere servizi temporanei, eseguire script di testo e distruggere i servizi dopo aver raccolto i risultati del test. Risparmia il tempo perché i servizi di avvio manualmente richiedono tempo e sono soggetti a errori.
3. Spingerment di produzione futura
Docker viene utilizzato principalmente negli ambienti di sviluppo. Tuttavia, man mano che le funzionalità Docker diventano più robuste, Docker verrà utilizzato per un maggiore lavoro a livello di produzione. Docker Compose può essere uno strumento prezioso per le distribuzioni di host singolo.
Esercizio: una semplice applicazione web
Proviamo la nostra mano in una semplice applicazione Web basata su Python per provare Docker Compose. Utilizzeremo il Flask Web Framework per creare un'applicazione che comunica con un database in memoria Redis per tenere traccia di quante volte l'applicazione Web è stata visitata.
La struttura della directory sembrerà così:
La struttura di directory di cui sopra non è necessaria per un'applicazione di base. Tuttavia, mostra come l'organizzazione delle informazioni possa essere utile per un'implementazione più efficiente della composizione di Docker.
Passaggio 1: creare struttura e file di directory
Creiamo la struttura della directory e i file necessari:
$ mkdir simple_app/content |
$ MKDIR Simple_App/Content/Code |
$ touch Simple_App/Docker-Opse.YML |
$ TOUCT Simple_App/content/Dockerfile |
$ TOUCT Simple_App/Content/Code/Simple_App.Py |
$ TOUCT Simple_App/Content/Code/Requisiti.TXT |
Il comando touch sta solo creando file vuoti. Puoi andare manualmente nelle cartelle e creare i file.
Passaggio 2: codice dell'applicazione Web
La cartella del codice contiene il codice dell'applicazione Web. Metti il seguente semplice_app.Py file:
Dal pallone di importazione di pallone |
app = pallone (__ nome__) |
Redis = Redis (host = 'Redis', porta = 6379) |
Count = Redis.incr ('hits') |
ritorno 'Benvenuti in Docker Composi lezioni!
Hai visitato questo sito volte.\N'.Formato (conteggio) |
Se __Name__ == "__main__": |
app.run (host = "0.0.0.0 ", debug = true) |
L'applicazione sopra crea una pagina di benvenuto che visualizza il numero di volte in cui la pagina è stata visitata. Il contatore di visita viene mantenuto in un database Redis. Redis utilizza la porta 6379 come porta di ascolto predefinita. Quindi, compila il requisiti.TXT file:
Ciò consentirà a PIP di installare le dipendenze Python dal contenitore Web. Eseguimo PIP come parte dell'inizializzazione del nostro servizio.
Passaggio 3: Dockerfile
Riempire il semplice_app/content/dockerfile con il seguente codice:
AGGIUNGERE ./codice /codice |
Esegui i requisiti di installazione PIP -R.TXT |
CMD ["Python", "Simple_App.py "] |
Quanto sopra Dockerfile raggiunge quanto segue:
- Crea un'immagine da Python: 3.6.3-Jessie. Se non è disponibile a livello locale, lo scarica da Docker Hub.
- Copie elementi in semplice_app/content/codice in /codice sul contenitore
- Impostato /codice Come directory di lavoro sul contenitore
- Utilizza PIP per installare le dipendenze Python
- Imposta il punto di partenza predefinito per l'esecuzione del contenitore Python Simple_App.Py.
Passaggio 4: Docker Composi
Riempire il semplice_app/docker-compose.YML File con il seguente codice:
- ./contenuto/codice:/codice |
Immagine: "Redis: Alpine" |
IL docker-compose.YML Il file definisce due contenitori: Web e Redis. Utilizza il formato Docker Composi versione 3.
Per il servizio Web:
- Costruisce il servizio Web utilizzando semplice_app/content/dockerfile
- Porta in avanti 5000 dal contenitore Web alla porta 5000 dell'host. La porta 5000 è la porta predefinita per le applicazioni del pallone.
- Volume semplice_app/content/codice è montato come /codice sul contenitore. Significa che se cambi qualcosa in semplice_app/content/codice, si rifletterà in /codice cartella sul contenitore Web.
Per il servizio Redis:
- Utilizza il Redis: immagine alpina da Docker Hub per creare il servizio Redis.
Passaggio 5: Esecuzione di applicazioni utilizzando Docker Compose
L'applicazione è pronta per la distribuzione. Dal semplice_app cartella, eseguire il seguente comando:
L'output dovrebbe iniziare in questo modo:
Passaggio 1/5: da Python: 3.6.3-Jessie |
3.6.3-Jessie: tira dalla biblioteca/Python |
85b1f47fba49: download [==========>] 12.43 MB/52.6 MB |
5409e9a7fa9e: scarica completare |
661393707836: download [===============>] 13.71 MB/43.23 MB |
1bb98c08d57e: download [>] 1.081MB/134.7 MB |
Una volta che tutte le immagini sono costruite e funzionanti, dovresti vedere quanto segue:
Stato: scaricata immagine più recente per Redis: Alpine |
Creazione di SimpleApp_redis_1 .. |
Creazione di SimpleApp_Web_1 .. |
Creazione di SimpleApp_redis_1 |
Creazione di sempliciapp_web_1 ... fatto |
Allegato a SimpleApp_redis_1, SimpleApp_Web_1 |
Redis_1 | 1: m 21 ott 02:06:33.639 * Pronto ad accettare le connessioni |
Web_1 | * In esecuzione su http: // 0.0.0.0: 5000/ (premere Ctrl+C per smettere) |
Web_1 | * Riavvio con Stat |
Web_1 | * Il debugger è attivo! |
Web_1 | * Pin del debugger: 237-189-083 |
Puoi testare l'applicazione andando su http: // localhost: 5000:. Se aggiorni la pagina alcune volte, dovrebbe riflettere il numero di visite. È possibile controllare lo stato dei servizi o dei contenitori in esecuzione:
Comando ID contenitore Comando immagine Nomi delle porte di stato creato |
22852E0AD98A Redis: Alpine "Docker-Entrypoint ..." 5 minuti fa 5 minuti 6379/TCP SimpleApp_redis_1 |
d51739d0a3ac SimpleApp_Web "Python Simple_App.py "5 minuti fa 5 minuti 0.0.0.0: 5000-> 5000/TCP SimpleApp_Web_1 |
Se si avvia una shell bash in SimpleApp_Web_1 (il nome del contenitore può differire), verrai effettuato l'accesso alla directory /codice di lavoro:
$ Docker Exec -it SimpleApp_Web_1 Bash |
root@d51739d0a3ac:/codice# ls |
requisiti.txt Simple_App.Py |
root@d51739d0a3ac:/codice# |
IL /codice La directory dovrebbe riflettere il contenuto di semplice_app/content/codice al suo interno come visto sopra (semplice_app.Py E requisiti.TXT).
Se aggiorni il tuo semplice_app.PyLinea da:
ritorno 'Benvenuti in Docker Composi lezioni!
Hai visitato questo sito volte.\N'.Formato (conteggio) |
A:
ritorno 'Benvenuti in Docker Composi lezioni!
Sei incuriosito?
Hai visitato questo sito volte.\N'.Formato (conteggio) |
Dovrebbe riflettere su http: // localhost: 5000:
Passaggio 6: chiusura dei servizi
Puoi fermare l'applicazione utilizzando:
Fermare SimpleApp_redis_1 ... fatto |
Fermare SimpleApp_Web_1 ... fatto |
I volumi montati persisteranno. È possibile rimuovere interamente i contenitori inclusi i volumi utilizzando il comando seguente.
$ Docker-compose giù --volume |
Rimozione di SimpleApp_redis_1 ... Fatto |
Rimozione di SimpleApp_Web_1 ... Fatto |
Rimozione della rete SimpleApp_Default |
Congratulazioni! Hai imparato le basi di Docker Compose.
Ulteriori studi
Per ulteriori studi, guarda la seguente documentazione:
- Documentazione Docker
- Riferimento del file di compositore Docker
- Docker composi networking
Riferimenti:
- https: // docs.Docker.com/compose/panoramica/#ambienti di sviluppo
- https: // docs.Docker.com/compose/getstarted/
- https: // blog.codeship.com/orchestrate-container-for-development-with-docker-compose/
- https: // www.sumologico.com/blog/devops/how-to-build-applications-docker-compose/
- https: // docs.Docker.com/compose/wordpress/#define-the-project