W tym artykule omówimy, jak zainstalować serwer MySQL MariaDB w kontenerze Docker i zobaczymy, jak połączyć go z phpMyAdmin w docker-compose, który instalowaliśmy w artykule Jak zainstalować phpMyAdmin w Docker.
Jak zwykle, aktualizujemy pakiety systemu operacyjnego.
apt update
Zainstalujemy niezbędne pakiety i dodamy nowe repozytorium:
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Aktualizujemy pakiety z nowym repozytorium:
apt update
Instalujemy Docker.
apt-get install docker-ce docker-ce-cli containerd.io
Sprawdzamy wersję Dockera:
docker --version
Sprawdzamy status:
systemctl status docker
W przypadku, gdy nie uruchomił się, uruchamiamy:
systemctl start docker
I dodajemy do autostartu.
systemctl enable docker
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Nadajemy uprawnienia do uruchamiania dla pliku docker-compose.
chmod +x /usr/local/bin/docker-compose
Sprawdzamy, czy Docker-Compose został zainstalowany:
docker-compose --version
Jak widzimy, wszystko w porządku. Przechodzimy do tworzenia pliku dla Docker-Compose.
Aby w przyszłości orientować się, gdzie i co mamy zainstalowane, stworzymy osobny folder dla tego projektu w katalogu /home i przejdziemy do niego.
mkdir /home/mariadb && cd /home/mariadb
W tym przewodniku zainstalujemy konkretną wersję MariaDB 10.8. Ale możesz zainstalować potrzebną wersję z dostępnych na stronie hub.docker.com
Aby stworzyć plik docker-compose.yaml, skorzystamy z repozytorium pod tym linkiem https://hub.docker.com/_/mariadb
Tworzymy plik docker-compose.yaml lub docker-compose.yml:
vim docker-compose.yaml
I dodajemy do niego następujący kod:
version: '3.1' services: mariadb: container_name: mariadb image: mariadb:10.8 ports: - 3310:3306 environment: MARIADB_USER: admin MARIADB_PASSWORD: your_password MARIADB_ROOT_PASSWORD: your_strong_pass restart: always
Gdzie:
mariadb: nazwa Twojego kontenera;
image: mariadb:10.8: obraz, z którego zostanie uruchomiona mariadb
ports: 3310:3306 - port 3310, który będziemy używać do połączenia z mariadb
restart:always - wskazuje, że kontener zostanie ponownie uruchomiony w przypadku awarii lub ponownego uruchomienia serwera
MARIADB_USER: tworzenie nowego użytkownika, w tym przypadku to admin;
MARIADB_PASSWORD: hasło dla użytkownika admin;
MARIADB_ROOT_PASSWORD: to hasło zostanie ustawione dla konta root superużytkownika MariaDB .
Uruchamiamy nasz skrypt (w tym celu musimy znajdować się w katalogu, w którym stworzono nasz plik. W tym przypadku to /home/mariadb):
docker-compose up -d
Czekamy na pobranie obrazów i uruchomienie.
Sprawdzamy:
docker-compose ps
lub
docker ps
Aby zobaczyć logi, użyj polecenia
docker logs -f mariadb
Można również wykonać instalację tylko w dockerze:
docker run -d --name mariadb -e MARIADB_USER=admin -e MARIADB_PASSWORD=your_password -e MARIADB_ROOT_PASSWORD=your_strong_pass mariadb:10.8
Tę wersję bazy danych mariadb:10.8 można również zainstalować razem z phpMyAdmin i powiązać z nią. Zobaczmy, jak to zrobić.
Edytujemy stworzony plik docker-compose.yaml
vim docker-compose.yaml
Dodajemy poniżej następującą konstrukcję:
version: '3.1' services: mariadb: container_name: mariadb image: mariadb:10.8 ports: - 3310:3306 environment: MARIADB_USER: admin MARIADB_PASSWORD: your_password MARIADB_ROOT_PASSWORD: your_strong_pass restart: always phpmyadmin: image: phpmyadmin restart: always ports: - 8090:80 environment: - PMA_HOST=mariadb depends_on: - mariadb
W sekcji phpmyadmin dodaliśmy obraz phpmyadmin, wskazaliśmy mu port 8090, ale teraz będzie on powiązany z konkretnym serwerem bazy danych, a mianowicie z tym, który zainstalowaliśmy/uruchomiliśmy mariadb:10.8.
Ten parametr jest zapisany w bloku environment , gdzie: PMA_HOST=mariadb - wskazuje na kontener/blok mariadb , który jest opisany powyżej w tym pliku.
Także dyrektywa depends_on: wskazuje na zależność uruchomienia od kontenera mariadb. Oznacza to, że dopóki kontener z mariadb się nie uruchomi, kontener z phpmyadmin nie zostanie uruchomiony. Możemy uruchomić phpmyadmin i mariadb jednym poleceniem.
docker-compose up -d lub docker-compose up -d --force-recreate
Sprawdzamy:
docker-compose ps
W ten sposób możesz zainstalować potrzebną wersję bazy danych MariaDB lub MySQL.
Jak zainstalować Postgres i pgadmin4 w Dockerze, można przeczytać w artykule Jak zainstalować PostgreSQL i pgAdmin w Docker.