Комментарии 14
Умеет давно, нужно использовать сетевой драйвер macvlan.
Как пример collabnix.com/2-minutes-to-docker-macvlan-networking-a-beginners-guide
Замечание:
- mysql-django:/var/lib/mysql
Это не анонимный, а вполне именованный том
Использовать pip с requirements.txt — это уже устаревшая неудобная практика. Лучше сразу начинать использовать poetry.
Мы недостатки pip преодолевали при помощи pip-compile и соответствующего инструментария. Но pip сейчас активно дорабатывают, глядишь, он и научится в зависимости нормально, а не как сейчас.
Да и за poetry от меня плюсик
В качестве БД с Django лучше использовать Postgres. Во-первых, он сам значительно опережает по возможностям и удобству MySQL, во-вторых, интеграция Django с Postgres намного более плотная, чем с MySQL
Мне самому пг нравится больше, но это очень холиварный вопрос. По возможностям мускуль уже сильно продвинулся вперёд. В частности, Мария и галера. Когда там в постгрес мастер-мастер завезут? Ну, и новичкам проще освоиться с мускулем будет. 100%. Единственное, что, кажется, что докер образ постгрес проще, чем мускуль, но это вопрос упаковки, а не самой бд
docker-compose.yml
...
db:
image: mysql:5.7
ports:
- '3306:3306'
env_file: .env
...
.env
MYSQL_DATABASE=db_django
MYSQL_USER=root
MYSQL_PASSWORD=password
MYSQL_ROOT_PASSWORD=password
И тогда settings.py что-то вроде:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ.get('MYSQL_DATABASE'),
'USER': os.environ.get('MYSQL_USER'),
'PASSWORD': os.environ.get('MYSQL_PASSWORD'),
'HOST': os.environ.get('MYSQL_HOST', 'db'),
'PORT': '3306',
}
}
И .env добавить в .gitignore не хранить данные продовой базы в репозитории
Лучше не путать .env
и env_file
. Я не знаю, кто тот гениальный человек, который первый это порекомендовал, но есть разница.
Кратко в том, что .env
считывается докер компостом и позволяет делать variable interpolation (почитайте в оф доке, что это такое).
А вот env_file
подцепляет env_file
и прокидывают ВНУТРЬ контейнера как переменные.
И иногда это дает СТРАННЫЕ эффекты.
Настройка docker для django на mysql