Skip to content

Repository files navigation

Docker SQL Lab

Source Code SQL Lab Check MySQL Check PostgreSQL Check Software License

Docker SQL Lab — локальный стенд MySQL и PostgreSQL

Выберите язык

Русский 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.

Требования

  1. Docker Engine или Docker Desktop с Docker Compose v2.
  2. GNU Make, Bash и базовые утилиты командной строки Unix, используемые сценариями.

Рекомендуемая среда: Linux; macOS с Docker Desktop; Windows с Docker Desktop и WSL2. Выполняйте команды из корня репозитория. Ветка проекта по умолчанию — master.

Быстрый старт

make init
make up

make 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 покрывают только MySQL demo; встроенной цели резервного копирования для PostgreSQL нет.
  • Все цели clean-* и reinit-* удаляют данные и требуют точного CONFIRM=1.

Безопасные последовательности: Проверки и эксплуатация. При ошибках сначала соберите диагностику: Диагностика.

Лицензии учебных данных

Необязательные учебные наборы данных сохраняют лицензии и уведомления об авторских правах и лицензиях исходных проектов. Происхождение, закреплённые ревизии, сведения о целостности и тексты лицензий приведены в THIRD_PARTY_NOTICES.md.


YA
yaleksandr89.github.io

About

Локальный Docker SQL Lab с MySQL, PostgreSQL, учебными базами Chinook, Sakila и Pagila и опциональным Adminer.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Contributors

Languages