170 похожих чатов

Такой вопрос, вникаю в docker и docker-compose. Есть проект на джанге

- сервер с админкой и дополнительный сервис,
который запускается кастомной командой в manage.py
Так вот, можно ли в docker-compose разделить этот проект на два контейнера,
где в одном контейнере будет запускаться сам сервак,
а в другом будет запускаться именно сервис на этом серваке?
Причём я не хочу собирать проект заново ради сервиса во втором контейнере.
Суть в чём - мне нужно поделить между этими контейнерами ресурсы (статику в основном)
и общение с базой через Django ORM.
Пока реализовал неприятным для меня способом - в entrypoint.sh вызываю сначала сервер (через gunicorn),
потом сервис в фоновом режиме (т.е. с & на конце), в итоге не имею представления о работоспособности самого сервиса (за исключением листинга логов).
Может есть какой-то более адекватный в этом плане путь?

19 ответов

22 просмотра

что такое "сервис на этом серваке"? это отдельный процесс?

Alexey-Konev Автор вопроса
Alex
что такое "сервис на этом серваке"? это отдельный ...

Это тупо python manage.py start_service - кастомная команда. Вызывается отдельным процессом, да.

Alexey Konev
Это тупо python manage.py start_service - кастомна...

ну вынеси его в отдельный контейнер на базе того же образа.

отдельный контейнер или supervisord/circus в контейнере

Muslim Beibytuly
отдельный контейнер или supervisord/circus в конте...

выкинуть супервизор в контейнере на мороз

Alexey Konev
Это тупо python manage.py start_service - кастомна...

В энтрипоинт засунь, в другом контейнере билдь

Alexey-Konev Автор вопроса
Alex
ну вынеси его в отдельный контейнер на базе того ж...

Это понятно. То есть, мне снова придётся пройти процедуру установки тех же зависимостей, сборки wheel и его запуска? Без этого не обойтись?

Alexey-Konev Автор вопроса
Alex
зачем?

Ну я просто немного не догоняю. В общем, какая логика. Есть контейнер server: внутри него джанговский проект, там же Dockerfile, Envfile, и entrypoint.sh для запуска именно этого сервера. Есть контейнер service: внутри него тот же джанговский проект, что и в server, но Dockerfile, Envfile и entrypoint.sh для запуска сервиса. Я же смогу в таком случае иметь из service доступ к моделям из server?

Alexey Konev
Ну я просто немного не догоняю. В общем, какая лог...

у твоего сервиса та же кодовая база что и у джанго проекта? что значит "доступ к моделям из server"? так-с вижу разницу между контейнером и образом ты не понимаешь.

Alexey Konev
>та же кодовая база да.

тогда что за хуйню ты несешь? > Я же смогу в таком случае иметь из service доступ к моделям из server?

Alexey-Konev Автор вопроса
Alex
тогда что за хуйню ты несешь? > Я же смогу в тако...

Так. Контейнер != отдельная изолированная виртуальная машина?

Alexey Konev
>та же кодовая база да.

https://pastebin.com/1AVszex5 вот пример простого entrypoint скрипта, который запускает нужный сервис в зависимости от команды

Alexey Konev
Так. Контейнер != отдельная изолированная виртуаль...

нет. контейнер это не виртуальная машина.

Alexey-Konev Автор вопроса
Alex
нет. контейнер это не виртуальная машина.

То есть ресурсы между всеми контейнерами в образе априори shared? (ну с учётом volumes конечно же)

Alexey Konev
То есть ресурсы между всеми контейнерами в образе ...

что ты понимаешь под ресурсами? что такое "контейнеры в образе"

Alexey-Konev Автор вопроса
Alex
что ты понимаешь под ресурсами? что такое "контейн...

Ресурсы - файлы проекта, для которого создан docker-compose.yml

Alexey Konev
Ресурсы - файлы проекта, для которого создан docke...

ну, ты собрал один раз образ, упаковал туда файлы проекта. дальше запустил этот образ два раза, с разными параметрами. получил два разных процесса контейнера, в одном твой гуникорн, в другом твой сервис. два раза один и тот же образ собирать не нужно

Похожие вопросы

Обсуждают сегодня

Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
лучше скажите, причём тут паскаль?
Alexey Kulakov
22
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
#include <stdio.h> #include <stdlib.h> #include <time.h> int** generate_table(int size_matrix) { int** matrix = (int**)malloc(size_matrix * sizeof(int*)); for (int i ...
Чувак
1
@PerlBanjoBot use v5.38; sub split_on_cond($arr, $cond) { ($a, $b) = ([], []); push @{ $cond->($_) ? $a : $b }, $_ for @$arr; ($a, $b) } use Data::Dumper; warn Dumpe...
Sergei Zhmylove
10
Всем привет! как узнать, что текст в TSkLabel был выведен сокращенным ? Есть функция для TLabel которая позволяет определить , что текст выведен сокращенным function TFrmMai...
DELPHI SOLUTIONS
6
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Дебил? Я ищу друга
Bitard 228
27
У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Карта сайта