Dockerfile. Может ли CMD прочитать аргумент?

Я новичок в docke, но я пытаюсь сделать что-то вроде этого в dockerfile

ARG ENV
CMD echo $ENV

CMD [ "manage.py","runserver", "0.0.0.0:8000", "--settings={ENV}" ]

И я хочу передать аргумент ENV из сборки docker в качестве build-args. Я хочу запускать django на основе окружения (staging/production/etc), но похоже, что CMD не читает аргумент.

Расширение переменных окружения - это работа оболочки. Когда вы запускаете manage.py как CMD типа JSON, скрипт python выполняется напрямую, и оболочка не запускается.

Чтобы shell расширил переменную, вы можете сделать

CMD ["/bin/sh", "-c", "manage.py runserver 0.0.0.0:8000 --settings=${ENV}"]
Вернуться на верх