Kontejnery Docker vám umožňují rychle spustit nové aplikace, aniž by byl váš systém znečištěn závislostmi. Databáze MySQL je běžným požadavkem pro webový software. Zde je návod, jak spustit novou instanci MySQL v Dockeru během několika minut.
Začínáme
Oficiální obraz MySQL na Docker Hub poskytuje vše potřebné, abyste mohli začít. Obrázky jsou k dispozici pro MySQL verze 5.6, 5.7 a 8.0. Zadejte ten, který chcete použít jako značku obrázku:
docker pull mysql:8.0
Před nasazením budete muset nastavit svazek Docker nebo připojení k připojení, aby se databáze zachovala. V opačném případě budou vaše data při restartování kontejneru ztracena. Připojení by mělo být provedeno do /var/lib/mysql
v kontejneru.
Musíte také nastavit heslo pro uživatele root MySQL. Použijte MYSQL_ROOT_PASSWORD
proměnná prostředí. Pokud tato proměnná není nastavena, MySQL odmítne inicializaci. Zkuste zvolit bezpečné heslo.
Zde je návod, jak spustit MySQL při splnění těchto předpokladů:
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=secret -v $HOME/mysql-data:/var/lib/mysql -d mysql:8.0
Dokončení rutiny prvního spuštění MySQL bude trvat několik sekund. Zda je databáze funkční, můžete zkontrolovat spuštěním docker logs my-mysql
. Zkontrolujte, zda řádek obsahuje ready for connections
.
SOUVISEJÍCÍ: Jak používat Docker ke kontejnerizaci PHP a Apache
Docker Compose
docker run
příkaz se může rychle protáhnout, zvláště pokud máte složité požadavky na konfiguraci. Psaní docker-compose.yml
soubor je lépe udržovatelný. Zde je příklad:
version: "3"
services:
mysql:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD
volumes:
- mysql:/var/lib/mysql
volumes:
mysql:
MySQL můžete spustit pomocí MYSQL_ROOT_PASSWORD=secure docker-compose up -d
.
SOUVISEJÍCÍ: Jak nainstalovat Docker a Docker Compose v systému Linux
Připojování k MySQL
Interaktivní shell MySQL můžete získat připojením ke kontejneru a spuštěním mysql
příkaz. To poskytuje plné rozhraní příkazového řádku MySQL, takže můžete používat všechny známé příkazy a příznaky.
docker exec -it my-mysql mysql -p
Tento příkaz otevře shell jako uživatel root a vyzve k zadání hesla.
Chcete-li importovat soubor SQL z vašeho souborového systému, můžete jej převést do příkazu:
docker exec -it my-mysql mysql -psecret database_name < path-to-file.sql
Pokud chcete přistupovat k MySQL ze svého hostitele, musíte nastavit vazbu portu. Svažte port hostitele s portem 3306 kontejneru. Přidejte do souboru docker-compose.yml
následující soubor v mysql
definice služby:
ports:
- 33060:3306
Tím se naváže port 33060 na vašem hostitelském počítači s portem 3306 kontejneru. Pokud nepoužíváte Docker Compose, předejte -p 33060:3306
k docker run
při spuštění kontejneru. Nyní se budete moci připojit k localhost:33060
pomocí klientů MySQL běžících na vašem hostiteli.
Pokud se potřebujete připojit z jiného Kontejner Docker, nejlepší je použít Docker Compose. Definujte jinou službu pro nový kontejner. Oba kontejnery budou existovat ve stejné síti Docker. Budete se moci připojit pomocí portu 3306 na názvu hostitele kontejneru MySQL (odpovídá názvu služby definovanému v souboru Compose).
Automatické vytvoření databáze a uživatele
Obrazy MySQL Docker podporují volitelné proměnné prostředí, které vám umožňují spravovat nastavení databáze při prvním spuštění. Nastavte tyto proměnné tak, aby automaticky zajišťovaly novou prázdnou databázi a uživatelský účet:
MYSQL_DATABASE
– Název databázového schématu, které se má vytvořit při první inicializaci serveru.MYSQL_USER
aMYSQL_PASSWORD
– Vytvořte nový počáteční uživatelský účet, odděleně odroot
uživatel. Pokud také nastavíteMYSQL_DATABASE
proměnnou, váš nový uživatelský účet bude automaticky získat všechna oprávnění k nově vytvořené databázi.MYSQL_RANDOM_ROOT_PASSWORD
– Nastavte tuto proměnnou tak, aby MySQL automaticky vygenerovalo nové heslo proroot
uživatel. NahrazujeMYSQL_ROOT_PASSWORD
variabilní. Vygenerované heslo bude odesláno do standardního výstupního proudu při prvním spuštění. Z tohoto důvodu byste měli být opatrní při používání této proměnné v prostředí CI – heslo může být viditelné každému, kdo má přístup k protokolům úloh!
Soubory prvního spuštění
Často budete mít tabulky a data, která chcete vložit do databáze hned po jejím vytvoření. Obrázky MySQL jsou nakonfigurovány tak, aby hledaly .sh
, .sql
a .sql.gz
soubory v kontejneru /docker-entrypoint-initdb.d
adresář.
Všechny nalezené soubory budou provedeny postupně. Řazení bude vždy podle abecedy. Můžete použít předpony souborů (např. 1-seed_tables.sql
/ 2-seed_data.sql
), abyste zajistili dokončení operací v zamýšleném pořadí.
Tento mechanismus vám umožňuje snadno osadit vaši novou instanci databáze počátečními daty. Můžete si napsat svůj vlastní Dockerfile s použitím MySQL jako základního obrazu a přidat své počáteční soubory do /docker-entrypoint-initdb.d
. Případně svažte připojení adresáře na vašem hostiteli do adresáře kontejneru.
MySQL bude ignorovat inicializační soubory, pokud v datovém adresáři není žádná databáze. Vymazání obsahu vašeho datového adresáře spustí novou inicializaci při restartování kontejneru.
Vyladění nastavení serveru
Konfigurační soubory serveru MySQL budou načteny z /etc/mysql/conf.d
. Přidejte do tohoto adresáře své vlastní konfigurační soubory pomocí přepsání souboru Dockerfile nebo připojení vazby, abyste upravili nastavení serveru. Seznam dostupných možností můžete získat v příručce k serveru MySQL.
Použití souboru voleb usnadňuje prohlížení a úpravu konfigurace v budoucnu. Zkontrolujete svůj soubor do správy verzí spolu s projektem. Příznaky příkazového řádku jsou však k dispozici také pro jednorázová vylepšení a experimentování.
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest --general-log=on
Tato varianta docker run
spustí MySQL s povoleným obecným protokolem dotazů. mysql
binární je vstupní bod obrázku, takže příznaky jsou předány docker run
za název obrázku bude předán do mysql
.
Závěr
Spuštění MySQL v rámci Dockeru je mnohem rychlejší a snazší než instalace serveru MySQL „na holý kov“. Můžete spustit více instancí MySQL bez rizika konfliktu.
Oficiální obrazy Dockeru přicházejí s užitečnými možnostmi konfigurace a vestavěnou podporou pro první spuštění databázových zárodků. To vám umožní rychle začít, ať už začínáte od nuly nebo používáte existující schéma.
SOUVISEJÍCÍ: Jak rychle nasadit WordPress jako kontejner Docker