Wstęp
Na początek warto byłoby w dużym skrócie wyjaśnić czym jest Docker i jak działa. Docker pozwala na tworzenie kontenerów w których możemy umieszczać aplikacje. Osoby, które dopiero poznają Dockera często porównują kontenery do maszyn wirtualnych co jest błędne ale pozwala chociaż trochę zobrazować sobie ich działanie. Kontenery z zasady są o wiele lżejsze niż maszyny wirtualne. Potrzebują mniej czasu oraz pamięci do uruchomienia. Działają całkowicie inaczej, każda wirtualna maszyna ma własny system natomiast kontenery współdzielą system hosta
Wymagania
Sam w sobie Docker może działać na systemach opartych o jądro Linuxa. Dlatego też uruchomienie np. na Windowsie opiera się na aplikacji Docker Desktop, która wykorzystuje WSL 2 do uruchomienia Dockera. Docker nie zadziała natywnie na FreeBSD (są różne sposoby, żeby to zrobić ale w tym poradniku nie o tym)
Sposób użycia w kontekście serwera metin2
Zamiast instalować wszystkie potrzebne aplikacje ręcznie opieramy ich instalacje oraz konfiguracje o Docker-Compose
Mamy pewność, że każda osoba które bierze udział przy tworzeniu serwera ma te same środowisko np. wersje bazy danych
W momencie szybkiej potrzeby zmiany serwera dedykowanego w przypadku abstrakcyjnych sytuacji takich jak np. niedostępność serwera u danego dostawcy. Jesteśmy w stanie odwzorować całe środowisko kilkoma poleceniami
Sam sobie serwer uruchamiamy nadal na FreeBSD czy też Windowsie. Wszystkie aplikacje, które są potrzebne do jego działania np. bazę danych czy serwer www na stronę/forum konteneryzujemy. Konteneryzacja może odbywać się na całkowicie innym, niezależnym serwerze od serwera gry
Słownik pojęć
Kontener - "opakowanie na aplikacje". Jeden kontener jest niezależny od drugiego ale mogą się ze sobą komunikować
Aplikacje - bazy danych, serwery www, serwery plików itp
Docker-Compose - to rozszerzenie czy też narzędzie dla Dockera, które pozwala uruchamiać wiele kontenerów na podstawie pliku .yml w którym konfigurujemy poszczególne aplikacje
Uruchomienie przykładowego kontenera
Kontener uruchomimy na Windowsie, wykorzystując aplikacje Docker Desktop
W kontenerze umieścimy serwer bazy danych MySQL w wersji 8.0.17
Skonfigurujemy bazę danych, hasło dla usera root oraz dodamy dodatkowego użytkownika
Określimy port na którym uruchomiony będzie kontener
Skonfigurujemy volumen w którym znajdować będą się pliki bazy danych
Jak uruchomić kontener
Pobieramy Docker Desktop dla systemu windows https://www.docker.com/products/docker-desktop/
Instalujemy Docker Desktop zgodnie z wymaganiami
Pobieramy plik yml z załącznika
Konfigurujemy plik, kolejno:
Hasło dla użytkownika root ustawiamy w environment->MYSQL_ROOT_PASSWORD
Nazwę dodatkowego użytkownika ustawiamy w environment->MYSQL_USER
Hasło dodatkowego użytkownika ustawiamy w environment->MYSQL_PASSWORD
Nazwę bazy danych ustawiamy w environment->MYSQL_DATABASE
Mapujemy porty na których ma nasłuchiwać MySQL, tak abyśmy mogli połączyć się do serwera z zewnątrz - więcej o tym tutaj https://docs.docker.com/get-started/docker-concepts/running-containers/publishing-ports/
Określamy volumen oraz "wyciągamy" pliki bezpośrednio z kontenera do jakiegoś folderu
W konsoli przechodzimy do lokalizacji gdzie znajduje się plik .yml z konfiguracją kontenera i wykonujemy polecenie "docker-compose -f .\docker-compose-mt2-local.yml up"
Mamy uruchomiony serwer MySQL w kontenerze
docker-compose-mt2-local.yml