По всем вопросам- @workakkk
@itchannels_telegram - 🔥лучшие ит-каналы
@ai_machinelearning_big_data - Machine learning
@pythonl - Python
@pythonlbooks- python книги📚
@datascienceiot - ml книги📚
РКН: https://vk.cc/cIi9vo
#VRHSZ
Post #2221
4.81K
✅ ШПАРГАЛКА: Как правильно поднимать БД перед проектом
Главная ошибка новичков - “у всех база разная”.
В итоге миграции ломаются, схема плывёт, на CI одно, у тебя другое, в проде третье.
Правильный старт всегда одинаковый:
1) Поднимай БД через Docker - чтобы у всей команды окружение было идентичным
2) Все параметры (пароль, порт, имя БД) храни в .env
3) Схему меняй ТОЛЬКО через миграции (Flyway/Liquibase/EF/Alembic)
4) Добавь healthcheck - сервис не должен стартовать раньше БД
5) Сделай команды backup/restore - пригодится в любой момент
Так ты гарантируешь:
- у всех одна и та же база
- быстрый старт проекта за 3 минуты
- деплой без сюрпризов
Главная ошибка новичков - “у всех база разная”.
В итоге миграции ломаются, схема плывёт, на CI одно, у тебя другое, в проде третье.
Правильный старт всегда одинаковый:
1) Поднимай БД через Docker - чтобы у всей команды окружение было идентичным
2) Все параметры (пароль, порт, имя БД) храни в .env
3) Схему меняй ТОЛЬКО через миграции (Flyway/Liquibase/EF/Alembic)
4) Добавь healthcheck - сервис не должен стартовать раньше БД
5) Сделай команды 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) Backup
docker exec -t app-postgres pg_dump -U app app > backup.sql
6) Restore
cat backup.sql | docker exec -i app-postgres psql -U app -d app
- 👍 17
- ❤ 5
- 👎 4
- 🔥 1
- 😁 1











