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.
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 mysqlcomposeUtwórz plik kompozycję Docker.YML w IT za pomocą ulubionego edytora tekstu i napisz następujące:
Wersja: „3.1 'Następnie uruchom następujące polecenie z wnętrza tego samego katalogu:
$ Docker -Compose Up -dTo 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”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.