Å sette opp MySQL -serveren er ofte kjedelig, du må sette opp brukerkonto, åpne porter, angi passord, lage databaser og tabeller osv. I dette innlegget vil jeg prøve å minimere noen av elendighetene dine ved å lage en enkel MySQL-distribusjon ved hjelp av Docker-Compose.
Ansvarsfraskrivelse: På ingen måte er denne komponeringsfilen “Produksjonsklar”. Hvis du vil kjøre en MySQL -database i produksjonen, må du stramme opp sikkerheten ganske mye mer. Dette vil omfatte å låse rotkontoen, sette opp TLS og sette strengere tillatelser på forskjellige databaser for forskjellige databasebrukere, etc.
Forsikre deg først om at Docker er installert på arbeidsstasjonen eller serveren din. For å kjøre en enkel MySQL -tjeneste, oppretter du først en ny mappe på Docker -verten din. Navn det mysqlcompose:
$ mkdir mysqlcomposeOpprett en fildocker-komponering.YML i den ved hjelp av din favoritt tekstredigerer, og skriv følgende:
Versjon: '3.1'Kjør deretter følgende kommando fra den samme katalogen:
$ docker -compose up -dDette med ovennevnte komponeringsfil vil det opprettes to nye containere, vil først være databasetjenesten, og den andre vil være en administratorbeholder som vil fungere som en frontend for databasestyring.
Selv om kommunikasjonen mellom administrasjonsbeholderen og MySQL -tjenesten er over TCP ved hjelp av port 3306, trenger vi ikke å åpne noen porter i databasen vår. Dette er fordi Docker -containere på et bronettverk kan snakke med hverandre på hvilken som helst port (bortsett fra på standard Bridge -nettverket til en Docker -vert). Du kan liste opp Docker -nettverket ved å bruke kommandoen Docker Network LS, og det vil vise deg at et nytt nettverk faktisk er opprettet.
Besøk http: // localhost: 8080 og logg inn som root ved å bruke passordet useadifferentpassword, og du vil få et veldig enkelt brukergrensesnitt for å samhandle med mysql. MySQL kan konfigureres til å bli autentisert på en rekke måter, men vi har valgt å bruke bare mysql_native_password som en autentiseringsmetode. Du kan passere MySQL Root -passordet ved hjelp av en miljøvariabel, som vist i selve YML -filen.
Merk: For klarhetens skyld nevnte jeg viktige legitimasjoner som MySQL Root -passordet og andre brukerpassord i ren tekst, her. Dette er åpenbart en sikkerhetsrisiko. Den riktige måten å gjøre dette på ville være å bruke Docker -hemmeligheter, men det er et tema for en annen dag.
Distribusjon av WordPress
WordPress er kanskje det klassiske eksemplet for å fremheve styrkene og nyansene til Docker-Compose. Som de fleste vanlige installasjoner av WordPress, bruker Docker -varianten også MySQL for backend -databasen. Databasen kjøres imidlertid som en annen beholder der webserveren (sammen med applikasjonen WordPress) kjører på en annen container.
Her er et utdrag fra den offisielle dokumentasjonen av Docker-Compose angående oppsettet.
Versjon: '3'Dette vil opprette et WordPress -nettsted som er åpent på Port 8000 av Docker -verten din. Du kan se at tjenesteseksjonen definerer to tjenester under den:
Først MySQL -databasen med et navngitt volum for å lagre vedvarende data og noen miljøvariabler for å konfigurere MySQL -bruker, database og passord.
For det andre, WordPress -beholderen som har en webserver, PHP og WordPress, alle installert med den. Den må snakke med databasen (tilgjengelig på DB: 3306 internt), den utsetter Port 80 internt for resten av verden via Docker -vertens port 8000. Den har også noen få miljøvariabler som definerer hvor du finner databasen (DB: 3306), sammen med databasenavnet, brukernavn og passord som vi definerte på MySQL -tjenesten.
Konklusjon
Forhåpentligvis illustrerer de ovennevnte eksemplene hvordan du konfigurerer en MySQL -beholder. Den underliggende ideen er at du passerer databasenavnet og andre konfigurasjonsdetaljer som miljøvariabler. Du kan alltid henvise til beskrivelsen som er gitt på Docker Hub, og så kan du konfigurere MySQL for din egen applikasjon.