Вы можете запустить Dockerfile FROM
любое изображение, которое вы хотите, включая то, которое вы создали сами. Если вы создали Flask изображение как
docker build -t me/flaskapp .
, то вы можете создать производное изображение, которое просто переопределяет его CMD
как
FROM me/flaskapp
CMD celery -A celery_tasks.celery worker -l INFO -E --autoscale=2,1 -Q apple,ball,cat
Если вы предпочитаете, вы можете иметь изображение это включает в себя исходный код, но не по умолчанию CMD
. Поскольку вы не можете отключить EXPOSE
порт, это имеет небольшое преимущество в том, что не похоже, что у вашего работника Celery есть сетевой слушатель. («Expose» как глагол в современном Docker почти ничего не значит.)
FROM me/code-base
EXPOSE 5000
CMD gunicorn run:my_app -b 0.0.0.0:5000 -w 4
@ Ответ Фрэнка предполагает Docker Compose path. Если вы регулярно используете Compose, вы можете предпочесть этот путь, поскольку нет простого способа заставить его создавать несколько изображений в правильном порядке зависимости. Во всех способах запуска контейнера есть способ указать альтернативную команду (от дополнительных опций docker run
до настройки Kubernetes pod command:
), так что это не особенно ограничивающий подход. И наоборот, в среде CI вы, как правило, можете указать несколько вещей для построения в последовательности, но вы, вероятно, захотите использовать ARG
для указания тега изображения .