У цій статті ми розглянемо як встановити в 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
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. Як це зробити, можете ознайомитися в цій статті.
Також пропонуємо розглянути інші корисні статті:
- Як встановити phpMyAdmin в Docker
- Як встановити Redis в Docker і Docker Compose
- Як скопіювати дані з хоста в Docker і з Docker на хост