ВОЙТИ
    В этой статье мы рассмотрим как установить в 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. Как это сделать, можете ознакомиться в этой статье.