W tym artykule omówimy, jak zainstalować serwer MySQL 8 w kontenerze Docker i zobaczymy, jak go podłączyć do phpMyAdmin w docker-compose, który instalowaliśmy w artykule Jak zainstalować phpMyAdmin w Docker.
Jak zainstalować Docker
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ę Docker:
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
Ustawiamy prawa 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 jest w porządku. Przechodzimy do tworzenia pliku dla Docker-Compose.
Aby orientować się w przyszłości, gdzie i co mamy zainstalowane, stworzymy osobny folder dla tego projektu w katalogu /home i przejdziemy do niego.
mkdir /home/mysql && cd /home/mysql
W tym przewodniku będziemy instalować konkretną wersję MySQL 8. W tym celu skorzystamy z repozytorium z hub.docker.com
Do stworzenia pliku docker-compose.yaml skorzystamy z repozytorium pod linkiem https://hub.docker.com/_/mysql
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: db_mysql: container_name: db_mysql image: mysql ports: - "3311:3306" restart: always environment: MYSQL_USER: admin MYSQL_PASSWORD: rNZzq5U37DqJlNe MYSQL_ROOT_PASSWORD: 4kDGQDYe4JxDjRd volumes: - /var/lib/mysqld:/var/lib/mysql
Gdzie:
db_mysql: nazwa Twojego kontenera;
image: mysql: obraz, z którego zostanie uruchomiony mysql 8;
ports: 3311:3306 - port 3311, który będziemy używać do połączenia z mysql;
restart:always - wskazuje, że kontener będzie ponownie uruchamiany w przypadku awarii lub restartu serwera;
mysql_USER: tworzenie nowego użytkownika, w tym przypadku to admin;
mysql_PASSWORD: hasło dla użytkownika admin;
mysql_ROOT_PASSWORD: to hasło będzie ustawione dla konta root superużytkownika mysql;
W volumes określamy wspólny katalog, aby przy ponownym uruchomieniu kontenera zachowały się dane bazy danych.
Uruchamiamy nasz skrypt (w tym celu musimy znajdować się w katalogu, w którym został stworzony nasz plik. W tym przypadku to /home/mysql):
docker-compose up -d
Czekamy na pobranie obrazów i uruchomienie.
Sprawdzamy:
docker-compose ps
lub
docker ps
Jak zobaczyć logi
docker logs -f db_mysql
Również tę wersję bazy danych mysql 8 można zainstalować razem z phpMyAdmin i podłączyć do niej. 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: db_mysql: container_name: db_mysql image: mysql ports: - "3311:3306" restart: always environment: MYSQL_USER: admin MYSQL_PASSWORD: rNZzq5U37DqJlNe MYSQL_ROOT_PASSWORD: 4kDGQDYe4JxDjRd volumes: - /var/lib/mysqld:/var/lib/mysql phpmyadmin: container_name: phpmyadmin image: phpmyadmin restart: always ports: - "8091:80" environment: - PMA_HOST=db_mysql depends_on: - db_mysql
W sekcji phpmyadmin dodaliśmy obraz phpmyadmin, wskazaliśmy mu port 8091, ale teraz będzie on powiązany z konkretnym serwerem bazy danych, a mianowicie z tym, który zainstalowaliśmy/uruchomiliśmy mysql 8
Ten parametr jest określony w bloku environment, gdzie:
PMA_HOST=db_mysql - wskazuje na kontener/blok mysql, który jest opisany powyżej w tym pliku.
Również dyrektywa depends_on: wskazuje na zależność uruchomienia od kontenera db_mysql. Oznacza to, że dopóki nie uruchomi się kontener z mysql, kontener z phpmyadmin nie zostanie uruchomiony.
Możemy uruchomić phpmyadmin i mysql jednym poleceniem.
docker-compose up -d
Sprawdzamy:
docker-compose ps
Jak widzimy, kontenery są uruchomione.
W podobny sposób możesz zainstalować potrzebną wersję bazy danych MariaDB. Jak to zrobić, możesz przeczytać w tym artykule.
Również proponujemy zapoznać się z innymi przydatnymi artykułami:
- Jak zainstalować phpMyAdmin w Docker
- Jak zainstalować Redis w Docker i Docker Compose
- Jak skopiować dane z hosta do Docker i z Docker na host