-
Notifications
You must be signed in to change notification settings - Fork 240
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add mock database for local development #1107
base: master
Are you sure you want to change the base?
Conversation
@@ -83,6 +83,8 @@ services: | |||
- POSTGRES_DB=vas3k_club | |||
ports: | |||
- "5432:5432" | |||
volumes: | |||
- ./dump.sql:/docker-entrypoint-initdb.d/dummy_dump.sql |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Любопытно. А оно выполнится при инициализации базы? Я знал, что так работает с /docker-entrypoint-initdb.d/init.sql
, но не уверен, что можно по-другому назвать файл.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
По-моему, докеру без разницы какие файлы линковать через volume :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
По-моему, докеру без разницы какие файлы линковать через volume :)
Это да, но ты же хочешь проинициализировать базу своим дампом. Тут уже не в докере дело, а в образе postgres.
Но я сейчас проверил. Да, их образ сам запустит все *.sql файлы. Подробнее в "Initialization scripts" здесь:
https://hub.docker.com/_/postgres/
В данном контексте, миграции — это python-файлы, с которыми Django умеет трекать изменения в схеме базы данной. Обычно они создаются автоматически, но в редких случаях их правят руками. Для приложения вроде твиттера миграция могла бы выглядеть так: from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [("migrations", "0001_initial")]
operations = [
migrations.AddField("Author", "rating", models.IntegerField(default=0)), # к "Авторам" добавит INTEGER "rating"
] Полтора года назад Вастрик предлагал добавить дамп в виде такой миграции (например, через RunSQL). Но я теперь не уверен, что это хорошее решение: я считаю, что надо дать разработчику выбор, добавлять ли тестовые данные. Иначе при каждом новом разворачивании придется вручную чистить базу от тестовых данных. За дамп спасибо! Я пробежался по нему глазами: была проделана большая работа. Он полезен сообществу и его точно надо куда-то приспособить. Мне даже стало тоскливо, что за два месяца тебя не написали никакого фидбека. Что делать дальше?Я вижу такой вариант наилучшим: вмержить дамп, сделать так, чтобы база в docker compose автоматически его подхватывала (смотреть мой комментарий), написать о дампе в README, чтобы недокерные разработчики тоже о нем знали. В миграциях ничего не меняем. При локальной разработке эти данные и так будут подгружаться и костыли с последней миграцией не нужны. Кого-то может смутить файл на 4 мегабайта в проекте. Я думаю, в этом ничего страшного нет: это не бинарник, а SQL, поэтому в git оно хорошо сжимается (да, git автоматически сжимает объекты). |
По мотивам вот этого #846
Накидал рандомных постов и данных в базу данных, сделал по одному типу каждого особого поста + несколько обычных постов.
Рандомные аватарки, забаненные пользователи, удаленные комментарии.
Я не понял, что @vas3k имел в виду за миграцию, я с базами данных не работал, но её добавил в docker-compose для локальной развертки. Собсна вот