TGViewer
SQL и Анализ данных SQL и Анализ данных @databases_tg · 12.5K subscribers
Post #1251 3.87K
✅ Как правильно разворачивать БАЗУ ДАННЫХ перед стартом любого проекта

Ошибки с БД на старте проекта потом стоят дороже всего:
плавающие миграции, разные схемы у команды, потерянные данные, “а у меня работает”.

Правильный подход простой - БД должна подниматься одинаково у всех:
локально, на CI и в проде.

Что делаем всегда:

1) Поднимаем БД через Docker (одинаковая среда для всех)
2) Храним все настройки в .env
3) Схема меняется только через миграции (Flyway / Liquibase / EF / Alembic)
4) Добавляем init-скрипты + seed данные (опционально)
5) Делаем healthcheck, чтобы сервис не стартовал раньше БД
6) Добавляем backup/restore команды (минимум — дамп)

Итог:
- один репозиторий = одна база
- любые изменения схемы воспроизводимы
- новый разработчик стартует за 3 минуты


1) Создай .env (пример)
cat > .env << 'EOF'
POSTGRES_DB=app
POSTGRES_USER=app
POSTGRES_PASSWORD=app123
POSTGRES_PORT=5432
EOF

# 2) docker-compose.yml для Postgres + healthcheck
cat > docker-compose.yml << 'EOF'
services:
postgres:
image: postgres:16
container_name: app-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports:
- "${POSTGRES_PORT}:5432"
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 3s
retries: 20

volumes:
pgdata:
EOF

3) Запуск
docker compose up -d

4) Проверка
docker compose ps

5) Дамп (на всякий)
docker exec -t app-postgres pg_dump -U app app > backup.sql

6) Восстановление
cat backup.sql | docker exec -i app-postgres psql -U app -d app
  • ❤ 13
  • 🔥 6
  • 👍 2
  • 😁 1
More from @databases_tg
  1. Sep 26, 2026UPDATE — оператор обновления данных в MySQL 🗂️ Если в таблице нужно изменить значение в у…
  2. Sep 25, 2026🧠 SQL-задача с подвохом Есть таблица транзакций: CREATE TABLE transactions ( id int PRIMA…
  3. Sep 25, 2026Как облегчить работу ИТ-аналитика уже сейчас — без долгосрочных перестроек процессов? Обсу…
  4. Sep 24, 2026🐧 Linux Cheat Sheet - шпаргалка по командам Linux Самая удобная шпаргалка по Linux и Bash…
  5. Sep 23, 2026⚡️ SQL-задача с подвохом Что вернёт этот запрос в PostgreSQL? CREATE TABLE payments ( id i…
  6. Sep 17, 2026🖥 Race condition в SQL: как продать последний товар дважды? Race condition в SQL: Дио и Д…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →