УВІЙТИ
    opened image

    У цій статті ми розглянемо як встановити в 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. Як це зробити, можете ознайомитися в цій статті.