У цій статті ми розглянемо, як встановити в 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.
Цей параметр прописаний у блоці environment , де: 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.