Instalacja MariaDB
Instalacja
MariaDB służy jako relacyjna baza danych dla aplikacji.
Założenia konfiguracyjne:
- Plik Compose znajduje się w
/srv/docker/compose/mariadb - Dane bazy znajdują się w
/srv/docker/data/mariadb - Logi dostępne są przez
docker logs(bez osobnego katalogu logów) - Używany jest obraz
mariadb:11.8-noble(LTS, stabilny) - W trakcie startu tworzony jest domyślny użytkownik
rootoraz domyślna baza systemowa - Komunikacja z innymi kontenerami odbywa się przez sieć Dockera
internal
Dostęp do sieci Docker
Wymagany dostęp do sieci internal
Aby komunikować się z innymi kontenerami, aplikacja wymaga dostępu do wewnętrznej sieci Docker internal.
Sieć internal to sieć wewnętrzna, która służy do komunikacji MariaDB z innymi aplikacjami kontenerowymi.
Tworzenie katalogów
Tworzymy katalog aplikacji:
sudo mkdir -p /srv/docker/compose/mariadb
Tworzymy katalog na dane bazy:
sudo mkdir -p /srv/docker/data/mariadb
Nadajemy właściciela katalogu danych zgodnego z UID/GID kontenera MariaDB:
sudo chown -R 999:999 /srv/docker/data/mariadb
Tworzenie pliku app.env
Tworzymy katalog na sekrety:
sudo mkdir -p /srv/docker/secrets/mariadb
Tworzymy i edytujemy plik app.env:
sudo micro /srv/docker/secrets/mariadb/app.env
W pliku umieszczamy:
MARIADB_ROOT_PASSWORD=ustaw_mocne_haslo
TZ=Europe/Warsaw
Zapisujemy plik i wychodzimy z edytora.
Konfiguracja Docker Compose
Przechodzimy do katalogu Compose:
cd /srv/docker/compose/mariadb
Tworzymy i edytujemy plik compose.yaml:
sudo micro compose.yaml
W pliku umieszczamy:
services:
mariadb:
image: mariadb:11.8-noble
container_name: mariadb
restart: unless-stopped
env_file:
- /srv/docker/secrets/mariadb/app.env
ports:
- "127.0.0.1:3306:3306"
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --innodb-buffer-pool-size=2G
volumes:
- /srv/docker/data/mariadb:/var/lib/mysql
- /srv/backups/db-dumps/mariadb:/backups
networks:
- internal
networks:
internal:
external: true
Zapisujemy plik i wychodzimy z edytora.
Uruchomienie kontenera
Uruchamiamy MariaDB:
docker compose up -d
Sprawdzamy, czy kontener działa:
docker ps | grep mariadb
Test działania
Sprawdzamy logi startowe bazy:
docker logs --tail 200 mariadb
Sprawdzamy, czy port nasłuchuje tylko na localhost:
sudo ss -tulpn | grep 3306
Podgląd logów
Podglądamy logi MariaDB:
docker logs -f mariadb
Obsługa bazy
Wejście do konsoli MariaDB (użytkownik root):
docker exec -it mariadb mariadb -u root -p
Uwagi utrzymaniowe
- MariaDB jest dostępna lokalnie na hoście (
127.0.0.1) oraz w sieci Dockerinternal - Inne kontenery powinny łączyć się z bazą używając hosta
mariadbi portu3306 - Hasło
rootprzechowywane w plikuapp.envnależy backupować - Dane bazy należy backupować przez dumpy lub snapshoty katalogu
/srv/docker/data/mariadb