- сервер с админкой и дополнительный сервис,
который запускается кастомной командой в manage.py
Так вот, можно ли в docker-compose разделить этот проект на два контейнера,
где в одном контейнере будет запускаться сам сервак,
а в другом будет запускаться именно сервис на этом серваке?
Причём я не хочу собирать проект заново ради сервиса во втором контейнере.
Суть в чём - мне нужно поделить между этими контейнерами ресурсы (статику в основном)
и общение с базой через Django ORM.
Пока реализовал неприятным для меня способом - в entrypoint.sh вызываю сначала сервер (через gunicorn),
потом сервис в фоновом режиме (т.е. с & на конце), в итоге не имею представления о работоспособности самого сервиса (за исключением листинга логов).
Может есть какой-то более адекватный в этом плане путь?
что такое "сервис на этом серваке"? это отдельный процесс?
Это тупо python manage.py start_service - кастомная команда. Вызывается отдельным процессом, да.
ну вынеси его в отдельный контейнер на базе того же образа.
отдельный контейнер или supervisord/circus в контейнере
выкинуть супервизор в контейнере на мороз
В энтрипоинт засунь, в другом контейнере билдь
Это понятно. То есть, мне снова придётся пройти процедуру установки тех же зависимостей, сборки wheel и его запуска? Без этого не обойтись?
Ну я просто немного не догоняю. В общем, какая логика. Есть контейнер server: внутри него джанговский проект, там же Dockerfile, Envfile, и entrypoint.sh для запуска именно этого сервера. Есть контейнер service: внутри него тот же джанговский проект, что и в server, но Dockerfile, Envfile и entrypoint.sh для запуска сервиса. Я же смогу в таком случае иметь из service доступ к моделям из server?
у твоего сервиса та же кодовая база что и у джанго проекта? что значит "доступ к моделям из server"? так-с вижу разницу между контейнером и образом ты не понимаешь.
>та же кодовая база да.
тогда что за хуйню ты несешь? > Я же смогу в таком случае иметь из service доступ к моделям из server?
Так. Контейнер != отдельная изолированная виртуальная машина?
https://pastebin.com/1AVszex5 вот пример простого entrypoint скрипта, который запускает нужный сервис в зависимости от команды
нет. контейнер это не виртуальная машина.
То есть ресурсы между всеми контейнерами в образе априори shared? (ну с учётом volumes конечно же)
что ты понимаешь под ресурсами? что такое "контейнеры в образе"
Ресурсы - файлы проекта, для которого создан docker-compose.yml
ну, ты собрал один раз образ, упаковал туда файлы проекта. дальше запустил этот образ два раза, с разными параметрами. получил два разных процесса контейнера, в одном твой гуникорн, в другом твой сервис. два раза один и тот же образ собирать не нужно
Обсуждают сегодня