Использование СУБД для контейнеров Docker
Здесь приводятся краткие инструкции по развертыванию СУБД MySQL и PostgreSQL, а также описание процедур резервного копирования и восстановления баз данных из этих СУБД.
MySQL
Пример развертывания СУБД:
- запустим СУБД MySQL
docker run --name my-mysql -d\
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_DATABASE=mydb \
-v my-db-volume:/var/lib/mysql \
mysql
Нюанс
Имя БД и пароль администратора, задаваемые в переменных, необходимы только при первом запуске и создании БД. Если контейнер будет удаляться и создаваться заново, нет необходимости указывать эти переменные - их значения будут храниться в БД.
- запустим контейнер phpMyAdmin
Теперь можно при помощи браузера перейти по ссылке: http://localhost:8080.
А можно при помощи Docker Engine работать с базой данных:
docker exec my-mysql \
mysql -u root -pmy-secret-pw \
-e "CREATE TABLE IF NOT EXISTS mydb.mytable (column_name VARCHAR(255)); \
INSERT INTO mydb.mytable (column_name) VALUES ('value');"
Резервное копирование базы данных MySQL
Можно выполнить резервное копирование выбранной базы данных:
Также можно выполнить резервное копирование всех баз данных в один файл:
docker exec my-mysql mysqldump -uroot -pmy-secret-pw --all-databases > mysql-all-databases-backup.sql
Восстановление базы данных MySQL
Прежде чем восстановить базу данных из файла, необходимо создать на сервере MySQL пустую одноименную базу:
После этого можно выполнить восстановление всех таблиц базы данных:
PostgreSQL
Пример развертывания СУБД:
- запустим СУБД:
docker run -d --name my-postgres \
-e POSTGRES_USER=admin \
-e POSTGRES_PASSWORD=my-secret-pw \
-v my-postgres-volume:/data/db \
-p 5432:5432 \
postgres
- запустим pgAdmin:
docker run -d --name my-pgadmin \
-e PGADMIN_DEFAULT_EMAIL=admin@domain.local \
-e PGADMIN_DEFAULT_PASSWORD=my-secret-pw \
-p 8090:80 \
dpage/pgadmin4
Теперь можно при помощи браузера перейти по ссылке: http://localhost:8090.
Резервное копирование базы данных PostgreSQL
Выполнить резервное копирование всех баз данных:
Резервное копирование указанной базы данных:
Восстановление базы данных PostgreSQL
Перед восстановлением базы данных нужно создать одноименную пустую базу:
После этого можно выполнить восстановление: