GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak spustit MySQL v kontejneru Docker

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 a MYSQL_PASSWORD – Vytvořte nový počáteční uživatelský účet, odděleně od root uživatel. Pokud také nastavíte MYSQL_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 pro root uživatel. Nahrazuje MYSQL_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


Docker
  1. Jak spustit MySQL v Docker Container:Jednoduchý a snadno sledovatelný průvodce

  2. Jak SSH do kontejneru Docker

  3. Jak poslat signál ke spuštění programu v kontejneru dockeru?

  1. Jak spustit příkaz na spuštěném kontejneru Docker

  2. Jak přiřadit statickou IP ke kontejneru Docker

  3. Jak opustit kontejner Docker

  1. Jak vytvořit MySQL Docker Container pro testování

  2. Jak přidat uživatele do kontejneru Docker?

  3. Jak spustit úlohu cron uvnitř kontejneru dockeru