5 Docker compongono esempi

5 Docker compongono esempi
Docker Compose è un modo efficiente e semplice per distribuire contenitori Docker su un host. Compose assumere un file yaml e crea contenitori in base alle sue specifiche. La specifica include quali immagini sono necessarie per essere distribuite, quali porte specifiche sono necessarie per essere esposte, volumi, CPU e limiti di utilizzo della memoria, ecc.

È un modo semplice per impostare la distribuzione automatica delle applicazioni con un frontend, un database e alcune password e chiavi di accesso lanciate per una buona misura. Ogni volta che esegui Docker-Opse dall'interno di una directory che contiene un documento di composizione.YML passa attraverso il file e distribuisce l'applicazione come specificato.

Per aiutarti a scrivere il tuo documento.YML qui sono 5 frammenti di yaml semplici e, si spera, che puoi mescolare e abbinare.

1. Proxy inverso nginx

Probabilmente l'applicazione più comune da distribuire come contenitore Docker è Nginx. Nginx può fungere da server proxy inverso e come punto di terminazione SSL per le tue applicazioni Web. Diversi sistemi di gestione dei contenuti come Ghost e WordPress possono essere ospitati dietro un singolo server proxy inverso NGINX e quindi ha senso avere sempre un snippet di server Nginx. La prima cosa di cui avresti bisogno è un file di configurazione Nginx. Se scegli di non crearne uno, il server HTTP predefinito è ciò che otterrai.

Ad esempio, creerei una cartella nginx-configurazione nella mia cartella domestica. Il file di configurazione Nginx.Conf sarà presente all'interno di questa cartella, insieme ad altre directory di file che Nginx si aspetterebbe da /etc /nginx. Ciò include certificati e chiavi SSL e nomi host per i server backend in cui il traffico deve essere inoltrato.

Questa cartella può quindi essere montata all'interno del contenitore Nginx AT /ETC /NGINX (con autorizzazione di sola lettura se si preferisce una precauzione aggiuntiva) e puoi eseguire il server come contenitore, ma è possibile configurarlo localmente dalla tua directory home senza dover registrare nel contenitore.

Questo è un campione:

Versione: '3'
Servizi:
nginx:
Immagine: nginx: ultimo
Volumi:
- /home/utente/nginx-configurazione:/etc/nginx
Porte:
- 80:80
- 443: 443

Blog fantasma

Ghost è un CMS scritto principalmente in nodo.js ed è semplicistico, veloce ed elegante nel design. Si basa su NGINX per instradare il traffico verso di esso e utilizza MariaDB o talvolta SQLite per archiviare i dati. È possibile distribuire un'immagine Docker rapida e sporca per Ghost usando un semplice frammento come mostrato di seguito:

Versione: '3'
Servizi:
fantasma:
Immagine: Ghost: ultimo
Porte:
- 2368: 2368
Volumi:
- Ghost-Data:/var/lib/ghost/content/
Volumi:
Data fantasma:

Questo crea un nuovo volume e lo monta all'interno del contenitore per archiviare il contenuto del sito Web in modo persistente. È possibile aggiungere il precedente servizio di proxy inverso NGINX a questo file di composizione e avere un blog Ghost di grado di produzione attivo e in esecuzione nella questione dei minuti, a condizione che tu abbia configurato NGINX per instradare il traffico pertinente dalla porta 80 o 443 alla porta 2368 sul fantasma contenitore.

Mariadb

MariaDB è un software abbastanza utile per non essere disponibile alla chiamata di un momento sul server. Tuttavia, i database creano molti registri, i dati effettivi tendono a diffondersi in tutto il luogo e l'impostazione di server di database e/o client non va mai senza intoppi. Il file Docker-Opgy accuratamente realizzato può mitigare alcuni dei problemi cercando di archiviare tutti i dati pertinenti in un unico volume Docker, mentre il database Software e le sue complessità sono nascoste nel contenitore A:

Versione: '3'
Servizi:
mydb:
Immagine: Mariadb
ambiente:
- Mysql_root_password = my-secret-pw

È possibile creare un nuovo contenitore di database per ogni nuova applicazione, invece di creare più utenti sullo stesso database, impostare i privilegi e passare attraverso una rigmarole dolorosa di garantire che ogni app e utente rimanga sul proprio terreno. Inoltre, non dovrai aprire le porte sul sistema host poiché il contenitore del database verrà eseguito sulla propria rete isolata e puoi averlo in modo che solo l'applicazione possa far parte di tale rete e quindi accedere al database.

WordPress Stack

Un culmine di tutte le varie parti dall'uso delle variabili di ambiente per l'esecuzione di un server Web frontend e un database di backend può essere combinato in un file di composizione Docker per un sito Web WordPress, come mostrato di seguito:

Versione: '3.3 '
Servizi:
DB:
Immagine: Mysql: 5.7
Volumi:
- db_data:/var/lib/mysql
Riavvia: sempre
ambiente:
Mysql_root_password: somewordpress
Mysql_database: wordpress
Mysql_user: wordpress
Mysql_password: wordpress
WordPress:
dipende da:
- db
Immagine: WordPress: ultimo
Porte:
- "8000: 80"
Riavvia: sempre
ambiente:
Wordpress_db_host: DB: 3306
Wordpress_db_user: wordpress
Wordpress_db_password: wordpress
Volumi:
db_data:

Questo è l'esempio più popolare ed è anche menzionato nella documentazione ufficiale di composizione Docker. È probabile che non aprirai WordPress, ma il file di compose qui può comunque servire come riferimento rapido per pile di applicazioni simili.

Docker-Ongose ​​con Dockerfiles

Finora abbiamo avuto a che fare solo con il lato puro di distribuzione di docker. Ma è probabile che tu utilizzerai COMPO non solo per distribuire ma sviluppare, testare e Poi distribuire applicazioni. Sia che in esecuzione sulla workstation locale o su un server CD/CI dedicato, Docker-Opgose può creare un'immagine utilizzando il Dockerfile presente nella radice del repository riguardante l'applicazione o parte dell'applicazione:

Versione: '3'
Servizi:
fine frontale:
costruire: ./frontend code
back-end:
Immagine: Mariadb
..

Avrai notato che mentre il servizio backend utilizza un'immagine preesistente di MariaDB, l'immagine del frontend viene prima costruita dal Dockerfile situato all'interno ./Directory del codice frontend.

Blocchi di lego di doccia

L'intera funzionalità di docker-compose è abbastanza facile da capire se solo ci chiediamo cosa stiamo cercando di costruire. Dopo alcuni errori di battitura e il tentativo fallito, rimarrai con una serie di frammenti che funzionano perfettamente e possono essere messi insieme come blocchi di costruzione LEGO per definire la distribuzione dell'applicazione.

Spero che i precedenti esempi ti diano un buon vantaggio. Puoi trovare il riferimento completo per la scrittura di un file di composizione qui.