Я могу сделать это монолитным c способом:
Монолит c
Dockerfile
FROM debian:10.0
RUN pip install --requirements requirements.txt # assume 400 MB
RUN pip install application:<tag>
Или использовать более модульный подход с использованием дополнительной базы:
модульная
база. Dockerfile
FROM debian:10.0
RUN pip install --requirements requirements.txt
main.Dockerfile
FROM application-base:latest
RUN pip install application:<tag>
Этот вопрос Как написать Dockerfile для пользовательского python проекта? , кажется, рекомендует первый подход; но я боюсь, что это приведет к большему расходу дискового пространства по сравнению с последним?
Предположим, что в моем requirements.txt
что-то изменится (что произойдет раз в 3 месяца), Docker потребуется создать новый слой 400 мб верно? Не будет ли второй подход правильно понимать изменения дельты? Единственная проблема, которую я вижу, это:
- Как сделать версию моего
base
образа - возможно, тег, где requirements.txt
последний раз обновлялся? - Сложности, связанные с поддержкой нескольких файлов Docker .
Я не знаю, полагаются ли люди на docker репозитории, но я думаю, что это будет нужно правильно (по крайней мере, пока вы не отключите эту версию или что-то в этом роде)?