opened image

Jak zainstalować MySQL 8 w Dockerze

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 

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ę 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

 


 

 

Instalujemy Docker-Compose

 

 

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;
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: