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

Этот параметр прописан в блоке enviroment где: 
PMA_HOST=db_mysql - указывает на контейнер/блок mysql который описан выше в данном файле.
Так же директива depends_on: указывает на зависимость старта/запуска от контейнера db_mysql. Это значить что пока не запуститься контейнер с mysql, контейнер с phpmyadmin не будет запущен. 

Можем запустить phpmyadmin и mysql одной командой.

 

 

 

 

docker-compose up -d 

 


Проверяем:

 

 

 

docker-compose ps

 


Как видим, контейнеры запущены. 


Подобным образом Вы можете установить нужную Вам версию базы данных MariaDB. Как это сделать, можете ознакомиться в этой статье.

 

Также предлагаем рассмотреть другие полезные статьи: