Skip to content

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 root oraz 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.

Tworzenie sieci Docker

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:

app.env
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:

compose.yaml
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 Docker internal
  • Inne kontenery powinny łączyć się z bazą używając hosta mariadb i portu 3306
  • Hasło root przechowywane w pliku app.env należy backupować
  • Dane bazy należy backupować przez dumpy lub snapshoty katalogu /srv/docker/data/mariadb