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.
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 mysqlcomposeCrea un file docker.YML in esso usando il tuo editor di testo preferito e scrivi quanto segue:
Versione: '3.1 'Quindi eseguire il seguente comando dall'interno della stessa directory:
$ Docker -Opse Up -DQuesto 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'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.