Wdrażanie MySQL za pomocą Docker-Compose

Wdrażanie MySQL za pomocą Docker-Compose
MySQL jest jednym z najpopularniejszych systemów zarządzania bazami danych. Wiele aplikacji używa go do swoich potrzeb backendowych. MySQL zasadniczo ma dwa komponenty jeden z nich to serwer bazy danych MySQL, który zarządza danymi i wchodzi w interakcje ze światem zewnętrznym, dostarczając aplikacji pożądanych danych, a także aktualizowanie rekordów w miarę pojawiania się nowych informacji. Klient MySQL może być dowolną aplikacją zdalną, taką jak phpMyAdmin lub Twoja niestandardowa aplikacja internetowa lub klient MySQL, który jest również nazwany tylko MySQL.

Konfigurowanie serwera MySQL jest często żmudne, musisz skonfigurować konto użytkownika, otwierać porty, ustawić hasła, tworzyć bazy danych i tabele itp. W tym poście postaram się zminimalizować niektóre z twoich nieszczęść, wykonując proste wdrożenie MySQL za pomocą Docker-Compose.

Zastrzeżenie: W żaden sposób ten plik komponuje „gotowy do produkcji”. Jeśli chcesz uruchomić bazę danych MySQL w produkcji, będziesz musiał znacznie bardziej zaostrzyć zabezpieczenia. Obejmie to blokowanie konta głównego, konfigurowanie TLS i ustawienie surowszych uprawnień na różnych bazach danych dla różnych użytkowników baz danych itp.

Prosty przykład

Najpierw upewnij się, że Docker jest zainstalowany na stacji roboczej lub serwerze. Aby uruchomić prostą usługę MySQL, najpierw utwórz nowy folder na hoście Docker. Nazwij to mysqlcompose:

$ mkdir mysqlcompose

Utwórz plik kompozycję Docker.YML w IT za pomocą ulubionego edytora tekstu i napisz następujące:

Wersja: „3.1 '
Usługi:
DB:
Zdjęcie: Mysql
Polecenie:--default-Authentication-Plugin = mysql_native_password
Uruchom ponownie: Zawsze
środowisko:
MySQL_ROOT_PASSWORD: UseadifferEntPassword
Administrator:
Zdjęcie: Administrator
Uruchom ponownie: Zawsze
Porty:
- 8080: 8080

Następnie uruchom następujące polecenie z wnętrza tego samego katalogu:

$ Docker -Compose Up -d

To z powyższym plikiem kompozytów zostaną utworzone dwa nowe kontenery, najpierw będzie usługa bazy danych, a druga będzie kontenerem administracyjnym, który będzie działał jako frontend dla zarządzania bazą danych.

Chociaż komunikacja między kontenerem administracyjnym a usługą MySQL jest przekraczająca TCP za pomocą portu 3306, nie musimy otwierać żadnych portów w naszej bazie danych. Wynika to z faktu, że kontenery Docker w sieci mostowej mogą rozmawiać ze sobą na dowolnym porcie (z wyjątkiem domyślnej sieci mostowej hosta Dockera). Możesz wymienić sieć Docker, używając sieci Docker LS i pokaże, że rzeczywiście utworzono nową sieć.

Odwiedź http: // localhost: 8080 i zaloguj się jako root za pomocą hasła UeadifferentPassword, a otrzymasz bardzo prosty interakcja z MySQL. MySQL można skonfigurować do uwierzytelnienia na różne sposoby, jednak zdecydowaliśmy się użyć tylko mysql_native_password jako metody uwierzytelniania. Możesz przekazać hasło root MySQL za pomocą zmiennej środowiskowej, jak pokazano w samym pliku YML.

Uwaga: ze względu na jasność wspomniałem o ważnych poświadczeniach, takich jak hasło roota MySQL i inne hasła użytkownika w zwykłym tekście, tutaj. To oczywiście ryzyko bezpieczeństwa. Właściwym sposobem na to byłoby użycie tajemnic Docker, ale to jest temat na kolejny dzień.

Wdrażanie WordPress

WordPress jest być może klasycznym przykładem podkreślenia mocnych i niuansów kompozycji dokera. Podobnie jak większość regularnych instalacji WordPress, wariant Docker używa również MySQL do bazy danych backend. Jednak baza danych jest uruchamiana jako inny kontener, w którym serwer WWW (wraz z aplikacją WordPress) działa na innym kontenerze.

Oto fragment oficjalnej dokumentacji Docker-Compose dotyczącej jego konfiguracji.

Wersja: „3”
Usługi:
DB:
Zdjęcie: Mysql: 5.7
wolumeny:
- db_data:/var/lib/mysql
Uruchom ponownie: Zawsze
środowisko:
MySQL_ROOT_PASSWORD: Some WordPress
MySQL_DATABase: WordPress
Mysql_user: WordPress
MySQL_Password: CreateNewPasswordEptequedeThopythis
WordPress:
zależy od:
- db
Zdjęcie: WordPress: najnowszy
Porty:
- „8000: 80”
Uruchom ponownie: Zawsze
środowisko:
WordPress_db_host: DB: 3306
WordPress_db_user: WordPress
WordPress_DB_Password: CreateNewPasswordpleepedeThopythis
WordPress_db_name: WordPress
wolumeny:
db_data:

To utworzy witrynę WordPress otwarta w porcie 8000 hosta Docker. Możesz zobaczyć, że sekcja usług definiuje dwie usługi w ramach IT:

Po pierwsze, baza danych MySQL z nazwanym woluminem do przechowywania trwałych danych i niektóre zmienne środowiskowe do konfigurowania użytkownika MySQL, bazy danych i hasła.

Po drugie, kontener WordPress, który ma zainstalowane z nim serwer Webserver, PHP i WordPress. Musi porozmawiać z bazą danych (dostępną w DB: 3306 wewnętrznie), wystawia port 80 wewnętrznie na resztę świata za pośrednictwem portu hosta Docker Host 8000. Ma również kilka zmiennych środowiskowych określających, gdzie znaleźć bazę danych (DB: 3306), wraz z nazwą bazy danych, nazwą użytkownika i hasłem, które zdefiniowaliśmy w serwisie MySQL.

Wniosek

Mamy nadzieję, że powyższe przykłady ilustrują, jak skonfigurować kontener MySQL. Podstawowym pomysłem jest przekazanie nazwy bazy danych i innych szczegółów konfiguracji jako zmiennych środowiskowych. Zawsze możesz zapoznać się z opisem podanym w Docker Hub, a następnie możesz skonfigurować MySQL dla własnej aplikacji.