Distribuzione di MySQL usando docker-compone

Distribuzione di MySQL usando docker-compone
MySQL è uno dei sistemi di gestione del database più popolari là fuori. Molte applicazioni lo usano per le loro esigenze di backend. MySQL ha essenzialmente due componenti uno è il server di database MySQL che gestisce i dati e interagisce con il mondo esterno, fornendo applicazioni i dati che desiderano, nonché l'aggiornamento dei record man mano che arrivano nuove informazioni. Il client MySQL può essere qualsiasi applicazione remota come PhpMyAdmin o la tua app Web personalizzata o il client della riga di comando di MySQL che viene anche chiamato Just MySQL.

La configurazione del server MySQL è spesso noiosa, è necessario impostare l'account utente, aprire le porte, impostare password, creare database e tabelle, ecc. In questo post, cercherò di ridurre al minimo alcune delle tue miserie effettuando una semplice distribuzione MySQL usando Docker-Opse.

Disclaimer: In nessun modo questo file di composizione è "pronto per la produzione". Se vuoi eseguire un database MySQL in produzione, dovrai serrare un po 'di più la sicurezza. Ciò includerà il blocco dell'account root, l'impostazione di TLS e l'impostazione di autorizzazioni più rigorose su vari database per vari utenti di database, ecc.

Un semplice esempio

Per prima cosa assicurati che Docker sia installato sulla workstation o sul server. Per eseguire un semplice servizio MySQL, crea prima una nuova cartella sul tuo host Docker. Nomina MySqlCompose:

$ mkdir mysqlcompose

Crea un file docker.YML in esso usando il tuo editor di testo preferito e scrivi quanto segue:

Versione: '3.1 '
Servizi:
DB:
Immagine: Mysql
Comando:-Default-Autenticazione-plugin = mysql_native_password
Riavvia: sempre
ambiente:
Mysql_root_password: useadifferentpassword
amministratore:
Immagine: amministratore
Riavvia: sempre
Porte:
- 8080: 8080

Quindi eseguire il seguente comando dall'interno della stessa directory:

$ Docker -Opse Up -D

Questo con il file di composizione sopra verrà creato due nuovi contenitori, prima sarà il servizio di database e il secondo sarà un contenitore amministratore che fungerà da frontend per la gestione del database.

Sebbene la comunicazione tra il contenitore amministratore e il servizio MySQL sia superiore a TCP utilizzando la porta 3306, non dobbiamo aprire alcuna porte sul nostro database. Questo perché i container Docker su una rete bridge possono parlarsi su qualsiasi porta (tranne sulla rete bridge predefinita di un host Docker). È possibile elencare la rete Docker utilizzando la rete Docker di comando LS e ti mostrerà che una nuova rete è stata effettivamente creata.

Visita http: // localhost: 8080 e accedi come root utilizzando la password useadifferentpassword e otterrai un'interfaccia utente molto semplice per interagire con il tuo mysql. MySQL può essere configurato per essere autenticato in vari modi, tuttavia, abbiamo optato per usare solo il mysql_native_pativewword come metodo di autenticazione. Puoi passare la password di root MySQL utilizzando tramite una variabile di ambiente, come mostrato nel file YML stesso.

Nota: per motivi di chiarezza, ho citato credenziali importanti come la password di root MySQL e altre password dell'utente in testo normale, qui. Questo è ovviamente un rischio per la sicurezza. Il modo corretto per farlo sarebbe quello di utilizzare Docker Secrets, ma questo è un argomento per un altro giorno.

Distribuzione di WordPress

WordPress è forse l'esempio classico per evidenziare i punti di forza e le sfumature di docker. Come la maggior parte dell'installazione regolare di WordPress, la variante Docker utilizza anche MySQL per il suo database back -end. Tuttavia, il database viene eseguito come un contenitore diverso in cui il server Web (insieme all'applicazione WordPress) è eseguito su un altro contenitore.

Ecco uno snippet dalla documentazione ufficiale di Docker-Opse per quanto riguarda la sua configurazione.

Versione: '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: createnewpassword perpleasetoncopyThis
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: createnewpassword perpletoncopyThis
Wordpress_db_name: wordpress
Volumi:
db_data:

Questo creerà un sito Web WordPress aperto alla porta 8000 del tuo host Docker. Puoi vedere che la sezione Servizi definisce due servizi sotto di essa:

Innanzitutto, il database MySQL con un volume denominato per archiviare dati persistenti e alcune variabili di ambiente per configurare l'utente, il database e la password MySQL.

In secondo luogo, il contenitore WordPress che ha un server web, PHP e WordPress tutti installati con esso. Deve parlare con il database (disponibile su DB: 3306 internamente), espone la porta 80 internamente al resto del mondo tramite la porta 8000 dell'host Docker. Ha anche alcune variabili di ambiente che definiscono dove trovare il database (DB: 3306), insieme al nome del database, al nome utente e alla password che abbiamo definito sul servizio MySQL.

Conclusione

Speriamo che i pochi esempi sopra illustrano come configurare un contenitore MySQL. L'idea sottostante è che si passa il nome del database e altri dettagli di configurazione come variabili di ambiente. Puoi sempre fare riferimento alla descrizione fornita su Docker Hub e quindi è possibile configurare MySQL per la tua applicazione.