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}"]