В этой статье мы рассмотрим как установить в Docker контейнере MySQL сервер MariaDB, и увидим как ее подключиться к phpMyAdmin в docker-compose который мы устанавливали в статье Как установить phpMyAdmin в 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/mariadb && cd /home/mariadb
В данном руководстве, мы будем устанавливать конкретную версию MariaDB 10.8. Но Вы можете установить нужную Вам из доступных на сайте hub.docker.com
Для создания файла docker-compose.yaml воспользуемся репозиторием по ссылке https://hub.docker.com/_/mariadb
Создаем файл docker-compose.yaml или docker-compose.yml:
vim docker-compose.yaml
И добавляем в него следующий код:
version: '3.1' services: mariadb: container_name: mariadb image: mariadb:10.8 ports: - 3310:3306 environment: MARIADB_USER: admin MARIADB_PASSWORD: your_password MARIADB_ROOT_PASSWORD: your_strong_pass restart: always
Где:
mariadb: название Вашего контейнера;
image: mariadb:10.8: образ из которого будет развернута mariadb
ports: 3310:3306 - порт 3310 который мы будем использовать для подключения к mariadb
restart:always - указывает на то что контейнер будет перезапущен при сбое или перезагрузке сервера
MARIADB_USER: создание нового пользователя в данном случае это admin;
MARIADB_PASSWORD: пароль для пользователя admin;
MARIADB_ROOT_PASSWORD: этот пароль будет установлен для учетной записи root суперпользователя MariaDB .
Запускаем наш скрипт (для этого нужно находиться в директории где создан наш файл. В данном случае это /home/mariadb):
docker-compose up -d
Дожидаемся скачивания образов, и развертывания.
Проверяем:
docker-compose ps
или
docker ps
Для просмотра логов используйте команду
docker logs -f mariadb
Так же можно выполнить установку только в docker:
docker run -d --name mariadb -e MARIADB_USER=admin -e MARIADB_PASSWORD=your_password -e MARIADB_ROOT_PASSWORD=your_strong_pass mariadb:10.8
Также данную версию базы данных mariadb:10.8 можно установить вместе с phpMyAdmin и привязать к ней. Рассмотрим как это сделать.
Отредактируем созданный файл docker-compose.yaml
vim docker-compose.yaml
Добавим ниже, следующую конструкцию:
version: '3.1' services: mariadb: container_name: mariadb image: mariadb:10.8 ports: - 3310:3306 environment: MARIADB_USER: admin MARIADB_PASSWORD: your_password MARIADB_ROOT_PASSWORD: your_strong_pass restart: always phpmyadmin: image: phpmyadmin restart: always ports: - 8090:80 environment: - PMA_HOST=mariadb depends_on: - mariadb
В секторе phpmyadmin мы добавили образ phpmyadmin, указали ему порт 8090, но теперь он будет привязан к конкретному серверу базы данных, а именно к тому который мы установили/развернули mariadb:10.8.
Этот параметр прописан в блоке enviroment где: PMA_HOST=mariadb - указывает на контейнер/блок mariadb который описан выше в данном файле.
Так же директива depends_on: указывает на зависимость старта/запуска от контейнера mariadb. Это значить что пока не запуститься контейнер с mariadb, контейнер с phpmyadmin не будет запущен. Можем запустить phpmyadmin и mariadb одной командой.
docker-compose up -d или docker-compose up -d --force-recreate
Проверяем:
docker-compose ps
Подобным образом Вы можете установить нужную Вам версию базы данных MariaDB или MySQL.
Как установить Postgres и pgadmin4 в Docker можно прочитать в статье Как установить PostgreSQL и pgAdmin в Docker.