opened image

Як встановити MySQL 8 в Docker

У цій статті ми розглянемо як встановити в Docker контейнері сервер MySQL 8, і побачимо як її підключити до phpMyAdmin в docker-compose, який ми встановлювали в статті Як встановити phpMyAdmin в Docker.
 

Як встановити Docker 

Як зазвичай, оновлюємо пакети ОС. 

 

apt update


Встановимо необхідні пакети, і додамо новий репозиторій:

 

 

 

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"

 


Оновлюємо пакети з новим репозиторієм:

 

 

 

 

apt update

 


Встановлюємо Docker.

 

 

 

 

apt-get install docker-ce docker-ce-cli containerd.io

 


Перевіряємо версію Docker:

 

 

 

 

docker --version

 


Дивимося статус:

 

 

 

 

systemctl status docker

 


У разі якщо він не запустився, запускаємо:

 

 

 

 

systemctl start docker

 


І додаємо в автозапуск.

 

 

 

 

systemctl enable docker

 


 

 

Встановлюємо 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


Встановлюємо права на запуск для файлу docker-compose. 

 

 

 

chmod +x /usr/local/bin/docker-compose

 


Перевіряємо чи встановився Docker-Compose:

 

 

 

 

docker-compose --version

 



Як бачимо, все в порядку. Переходимо до створення файлу для Docker-Compose.

Щоб орієнтуватися в майбутньому в тому де і що у нас встановлено, створимо окрему папку для даного проєкту в каталозі /home і перейдемо в нього.

 

 

 

 

mkdir /home/mysql && cd /home/mysql

 


У даному керівництві, ми будемо встановлювати конкретну версію MySQL 8. Для цього скористаємося репозиторієм з hub.docker.com

Для створення файлу docker-compose.yaml скористаємося репозиторієм за посиланням https://hub.docker.com/_/mysql

Створюємо файл docker-compose.yaml або docker-compose.yml:

 

 

 

 

vim docker-compose.yaml

 


І додаємо в нього наступний код:

 

 

 

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

 


Де:

db_mysql: назва Вашого контейнера;
image: mysql: образ з якого буде розгорнута mysql 8;
ports: 3311:3306 - порт 3311, який ми будемо використовувати для підключення до mysql;
restart:always  - вказує на те, що контейнер буде перезапущений при збої або перезавантаженні сервера;
mysql_USER: створення нового користувача, в даному випадку це admin;
mysql_PASSWORD: пароль для користувача admin;
mysql_ROOT_PASSWORD: цей пароль буде встановлений для облікового запису root суперкористувача mysql;
У volumes ми прописуємо спільну директорію для того, щоб при перезапуску контейнера збереглися дані бази даних.

Запускаємо наш скрипт (для цього потрібно знаходитися в директорії, де створений наш файл. У даному випадку це /home/mysql):

 

 

 

 

 

 

docker-compose up -d 

 


Чекаємо завантаження образів і розгортання.

Перевіряємо:

 

 

 

 

docker-compose ps

 


або 

 

 

 

 

docker ps

 


 

 

Як подивитися логи

 

docker logs -f db_mysql

 


Також дану версію бази даних mysql 8 можна встановити разом з phpMyAdmin і прив'язати до неї. Розглянемо як це зробити.

Відредагуємо створений файл docker-compose.yaml

 

 

 

 

vim docker-compose.yaml

 



Додамо нижче наступну конструкцію:

 

 

 

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


У секторі phpmyadmin ми додали образ phpmyadmin, вказали йому порт 8091, але тепер він буде прив'язаний до конкретного сервера бази даних, а саме до того, який ми встановили/розгорнули mysql 8

Цей параметр прописаний у блоці environment, де: 
PMA_HOST=db_mysql - вказує на контейнер/блок mysql, який описаний вище в даному файлі.
Також директива depends_on: вказує на залежність старту/запуску від контейнера db_mysql. Це означає, що поки не запуститься контейнер з mysql, контейнер з phpmyadmin не буде запущений. 

Можемо запустити phpmyadmin і mysql однією командою.

 

 

 

 

docker-compose up -d 

 


Перевіряємо:

 

 

 

docker-compose ps

 


Як бачимо, контейнери запущені. 


Подібним чином Ви можете встановити потрібну Вам версію бази даних MariaDB. Як це зробити, можете ознайомитися в цій статті.

 

Також пропонуємо розглянути інші корисні статті: