| Русский | English | Español | 中文 | Français | Deutsch |
|---|---|---|---|---|---|
| Выбран | English | Español | 中文 | Français | Deutsch |
Локальный Docker Compose-стенд для практики SQL и знакомства с MySQL и
PostgreSQL. Каждую СУБД можно запускать отдельно или обе вместе. Компактная
demo создаётся автоматически, а необязательные учебные базы Sakila, Pagila
и Chinook дают готовые данные для упражнений. Adminer подключается только при
необходимости.
В записях используется PhpStorm. Вместо него подойдут DataGrip, DBeaver, Adminer или другой клиент MySQL/PostgreSQL.
| Сценарий | Яндекс.Диск | Google Drive | Что показано |
|---|---|---|---|
Первый запуск с обязательной demo, затем добавление учебных баз |
Смотреть | Смотреть | Запуск MySQL и PostgreSQL с обязательной demo; проверка; подготовка Sakila, Pagila и Chinook; подтверждённая переинициализация; повторная проверка и SQL-запросы. |
| Первый запуск с заранее подготовленными учебными базами | Смотреть | Смотреть | Подготовка Sakila, Pagila и Chinook до первого запуска; единая инициализация обязательной demo и учебных баз; проверка доступа и SQL-запросы. |
- MySQL 9.7.1 LTS
- PostgreSQL 18.4
- Adminer 5.4.2 Docker Official Image
- Docker Compose v2
- GNU Make и Bash для команд проекта и сценариев инициализации
Закреплённые значения по умолчанию заданы в
.docker.env.example; make init создаёт из него
локальный .docker.env. Сервисы описаны в
docker-compose.yml.
⚠️ Важно: это учебное окружение
Проект не является готовым шаблоном для промышленной эксплуатации. Для внешнего использования нужны отдельные решения по учётным данным, публикации сервисов в сети, хранению данных, резервному копированию и эксплуатации.
- MySQL и PostgreSQL работают независимо или одновременно.
- Обязательная
demoв каждой СУБД содержит одинаковые начальные записи. - Необязательные Sakila и Chinook доступны для MySQL, Pagila и Chinook — для PostgreSQL.
- Adminer — отдельный дополнительный веб-интерфейс для обеих СУБД.
- Каталоги данных, инициализации и учебных баз разделены по СУБД и подключены в контейнеры с хоста.
- Проверки конфигурации и доступа, импорт доверенных SQL-файлов и команды
очистки и переинициализации, удаляющие данные,
собраны в
Makefile.
- Docker Engine или Docker Desktop с Docker Compose v2.
- GNU Make, Bash и базовые утилиты командной строки Unix, используемые сценариями.
Рекомендуемая среда: Linux; macOS с Docker Desktop; Windows с Docker Desktop
и WSL2. Выполняйте команды из корня репозитория. Ветка проекта по умолчанию —
master.
make init
make upmake init создаёт локальный .docker.env из отслеживаемого
.docker.env.example, проверяет контролируемые пути
хранения и создаёт рабочие каталоги. При первом запуске официальные точки
входа инициализируют обе СУБД. Даже без необязательных учебных баз вы получите
рабочие MySQL и PostgreSQL с обязательной demo и начальными записями.
make up запускает MySQL, PostgreSQL и Adminer; make up-no-ui — обе СУБД
без Adminer. С настройками по умолчанию Adminer доступен по адресу
http://127.0.0.1:8081.
Подробно о запуске, подключениях и учётных данных: Начало работы.
Учебные базы не обязательны: demo создаётся всегда; для MySQL доступны
Sakila и Chinook, для PostgreSQL — Pagila и Chinook.
Первый запуск, каталоги данных пусты
make init
make samples-mysql
make samples-postgres
make upУчебные базы подготавливаются до первой инициализации; официальные точки входа
загрузят их вместе с demo.
Внимание: переинициализация удаляет данные выбранной СУБД. Резервная копия нужна, только если требуется сохранить собственные данные; для одноразового учебного стенда без ценных изменений она не обязательна.
📦 Стенд уже запускался: добавить или повторно использовать учебные базы
Уже инициализировано без учебных баз. Обычный make up не применит новые
файлы инициализации или учебных баз. Сначала сохраните важные данные, затем
выполните нужный вариант:
- MySQL:
make samples-mysql, затемmake reinit-mysql CONFIRM=1. - PostgreSQL:
make samples-postgres, затемmake reinit-postgres CONFIRM=1. - Обе СУБД:
make samples-mysql,make samples-postgres, затемmake reinit-all CONFIRM=1.
Внимание:
reinit-*удаляет данные выбранной СУБД и выполняется только с точнымCONFIRM=1.
Учебные базы уже установлены. Используйте обычный make up или выбранную
цель make up-*: повторная загрузка и переинициализация не нужны, базы
сохраняются в каталогах хоста, подключённых в контейнеры.
Подробнее: Базы и учебные данные.
| Команда | MySQL | PostgreSQL | Adminer |
|---|---|---|---|
make up |
Запускает | Запускает | Запускает |
make up-no-ui |
Запускает | Запускает | Останавливает |
make up-mysql |
Запускает | Не запускает | Не запускает |
make up-postgres |
Не запускает | Запускает | Не запускает |
Команды одной СУБД не останавливают уже работающую другую; Adminer управляется
отдельно. Полный набор целей описан в Makefile.
Внутри Compose-сети Adminer использует серверы mysql и postgres. Клиенты на
хосте используют 127.0.0.1 и настроенные MYSQL_PORT или POSTGRES_PORT.
Для обычной работы укажите DB_USER и DB_PASSWORD.
| СУБД | Доступна всегда | После инициализации необязательных учебных баз |
|---|---|---|
| MySQL | demo |
sakila, chinook |
| PostgreSQL | demo |
pagila, chinook |
Имена необязательных баз действительны только после их фактической инициализации. Подробности: запуск и подключения · базы и учебные данные.
| Назначение | Пользователь | Пароль |
|---|---|---|
| Общий учебный пользователь | DB_USER |
DB_PASSWORD |
| Администратор MySQL | root |
MYSQL_ROOT_PASSWORD |
| Суперпользователь PostgreSQL | POSTGRES_SUPERUSER |
POSTGRES_SUPERUSER_PASSWORD |
POSTGRES_SUPERUSER и DB_USER должны быть разными ролями. Для упражнений
используйте учебного пользователя и замените примерные пароли до публикации
сервисов.
Обе demo содержат эквивалентную таблицу demo_users с пятью строками.
Статические проверки не требуют запущенных СУБД:
make check-env
make config
make test-storage-pathsПосле запуска make check проверяет demo и доступ DB_USER, а
make test-sql-imports — публичные цели импорта доверенных SQL-файлов. Порядок
и ограничения: Проверки и эксплуатация.
BIND_ADDRESS=127.0.0.1публикует сервисы только на интерфейсе обратной петли (loopback).BIND_ADDRESS=0.0.0.0открывает их на всех интерфейсах: заранее настройте межсетевой экран, надёжные учётные данные и доверенную сеть.- Официальные точки входа выполняют инициализацию только для пустого каталога данных.
make mysql-importиmake postgres-importпринимают только доверенный SQL. Это не изолированная среда (sandbox): возможна частичная запись без полного автоматического отката. Перед важным импортом проверьте SQL-файл и сделайте подходящую резервную копию.- Встроенные
make dumpиmake restoreпокрывают только MySQLdemo; встроенной цели резервного копирования для PostgreSQL нет. - Все цели
clean-*иreinit-*удаляют данные и требуют точногоCONFIRM=1.
Безопасные последовательности: Проверки и эксплуатация. При ошибках сначала соберите диагностику: Диагностика.
Необязательные учебные наборы данных сохраняют лицензии и уведомления об
авторских правах и лицензиях исходных проектов. Происхождение, закреплённые
ревизии, сведения о целостности и тексты лицензий приведены в
THIRD_PARTY_NOTICES.md.
