Целью этой библиотеки образов является предоставление разработчикам (в первую очередь разработчикам Добро.сайта) окружения Docker для разработки и тестирования сайтов, использующих MySQL, позволяющего решать следующие задачи.
- Выбор версии MySQL (включая уже официально неподдерживаемые).
- Готовые к работе инструменты разработки и отладки.
- Единообразие. Все образы предоставляют делаются насколько это возможно похожими друг на друга по составу ПО, используемым версиями, настройкам и т. п.
- Настрой сам. Образы содержат широкий набор приложений и инструментов, но по умолчанию подключены только самые необходимые. Использование всего остального остаётся на усмотрение разработчика.
Образы рассчитаны на использование с docker-compose, поэтому все примеры даются для него.
Пример файла docker-compose.yml
:
version: '3'
services:
mysql:
image: dobrosite/mysql:5.7
environment:
FILE_OWNER_UID: 1000
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- ./docker/var/mysql:/var/lib/mysql
- ./db/migrations:/var/local/mysql/migrations
Некоторые настройки можно произвести через переменные окружения.
FILE_OWNER_UID
— UID для пользователяmysql
, от которого работает сервер баз данных.MYSQL_MIGRATIONS_TABLE
— имя таблицы для записи применённых миграций (по умолчаниюmigrations
).MYSQL_MIGRATIONS_DIR
— путь к папке внутри контейнера, содержащей файлы миграций (по умолчанию/usr/local/mysql/migrations
).
Образы содержат простой автоматический механизм применения миграций.
При каждом запуске, если установлены переменные окружения
MYSQL_ROOT_PASSWORD и
MYSQL_DATABASE вызывается сценарий
docker-mysql-migrate
. Этот сценарий ищет внутри контейнера в папке, заданной переменной
MYSQL_MIGRATIONS_DIR файлы *.sql и применяет их к базе, заданной переменной MYSQL_DATABASE
.
Применённые миграции записываются в таблицу, заданную переменной MYSQL_MIGRATIONS_TABLE
, чтобы исключить их
повторное применение.