Docker - środowisko dla Concrete 5 - MySQL / MariaDB

W poprzednim wpisie pobraliśmy obrazy niezbędne do pracy, teraz przygotujmy sobie bazę.

Rzeczy do zrobienia:

wyznaczyć miejsce na przechowywanie danych

ustawić hasło dla użytkownika root

wystawić port do połączenia (to jest opcjonalne, ale jeśli mamy jakiegoś klienta do pracy z bazą danych to będzie nam to potrzebne)


Zaczniemy od pierwszego - miejsce do przechowywania danych.

Poniżej zamieszczam link do szczegółów:

https://docs.docker.com/engine/tutorials/dockervolumes/

Dane możemy przechowywać na kilka sposobów - najpopularniejsze (z jakich korzystałem) to utworzenie voluminu dla kontenera i podpięcie go do folderu na kontenerze lub zamontowanie folderu z komputera hosta do folderu na kontenerze. Czym to się różni ?
Otóż w przypadku MySQL (mariadb) podłączając folder z hosta do folderu z dockera natkniemy się na problem z zapisem - a dokładniej uprawnieniami.
Najłatwiejszym rozwiązaniem tego problemu będzie pierwsze podejście czyli stworzenie woluminu dla MariaDB.

Woluminy nie są przypisane do jakiegoś konkretnego obrazu. Są to uniwersalne miejsca do składowania danych. Ok, więc stwórzmy go dla naszej bazy i nazwijmy mariadb_data .

docker volume create --name mariadb_data

Aby wyświetlić woluminy utworzone w systemie wpisujemy polecenie:

docker volume ls

Jeśli chcemy uzyskać więcej na temat wybranego woluminu wpisujemy polecenie:

docker volume inspect NAZWA_WOLUMINU

np docker volume inspect mariadb_data

Uzyskamy wtedy wpis podobny do poniższego:

[
    {
        "Name": "mariadb_data",
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/mariadb_data/_data",
        "Labels": null
    }
]

Dzięki temu, że woluminami będzie zajmował się docker, nie będzie problemu z uprawieniami dla użytkownika.

Mamy już wolumin, czas utworzyć kontener z MariaDB.

Utworzenie kontenera jest bardzo proste, wystarczy wydać jedno polecenie:

docker run --name MariaDB -v mariadb_data:/var/lib/mysql -p 3306:3306 -e "MYSQL_ROOT_PASSWORD=RootPassword" -d mariadb

I to wszystko.

Aby sprawdzić czy kontener się uruchomił wpisujemy polecenie

docker ps

Jeśli widnieje lista z 1 kontenerem tzn, że mamy uruchomiony kontener z uruchomionym serwerem MySQL.

Pokrótce opowiem co jaki parametr oznacza. Zaczniemy od lewej:

docker run - uruchamiamy kontener

--name MariaDB - nasza nazwa dla kontenera (może być dowolna)

-v mariadb_data:/var/lib/mysql - podpięcie wcześniej utworzonego woluminu pod folder na kontenerze, w którym przechowywane są dane z MySQL

-p 3306:3306 - wystawiene portu z kontenera do hosta - zapis ten oznacza, że port 3306 na komputerze lokalnym (host) będzie wskazywał na port 3306 na kontenerze. Jeśli mielibyśmy zapis: "-p 5306:3306" oznaczałoby, że port 5306 na komputerze lokalnym będzie wskazywał na 3306 na kontenerze

-e "MYSQL_ROOT_PASSWORD=RootPassword" - ustawienie zmiennej środowiskowej MYSQL_ROOT_PASSWORD dla kontenera (w tym przypadku hasło do roota)

-d - opcja detach, która powoduje uruchomienie i zostawienie w tle kontenera

mariadb - nazwa obrazu

Ok, mamy gotowy serwer bazodanowy, czas na stworzenie serwera WWW - w kolejnym wpisie :)