Внутри моего Dockerfile:
ENV PROJECTNAME mytestwebsite
CMD ["django-admin", "startproject", "$PROJECTNAME"]
Ошибка:
CommandError: '$PROJECTNAME' is not a valid project name
Какой здесь самый быстрый обходной путь? Есть ли у Docker какие-либо планы по «исправлению» или внедрению этой функции в более поздних версиях Docker?
ПРИМЕЧАНИЕ. Если я удалю строку CMD из файла Docker, а затем запустил контейнер Docker, я смогу вручную запустить Django-admin startproject $ PROJECTNAME изнутри контейнера, и он создаст проект ...
docker
dockerfile
Дэвид
источник
источник
$PROJECTNAME
?Ответы:
Когда вы используете список выполнения, как в ...
... тогда Docker выполнит данную команду напрямую , без использования оболочки. Поскольку оболочка не используется, это означает:
>
,<
,|
и т.д.command1; command2
Если вы хотите,
CMD
чтобы переменные расширялись, вам нужно организовать оболочку. Сделать это можно так:Или вы можете использовать простую строку вместо списка выполнения, что даст вам результат, во многом идентичный предыдущему примеру:
источник
Если вы хотите использовать значение во время выполнения, установите
ENV
значение вDockerfile
. Если вы хотите использовать его во время сборки, вам следует использоватьARG
.Пример :
Передайте значение в команде сборки:
docker build -t tagName --build-arg value="jarName"
источник
Допустим, вы хотите запустить Java-процесс внутри контейнера:
Пример отрывка из Dockerfile:
Пример отрывка из entrypoint.sh:
источник
Вдохновленный вышесказанным, я сделал следующее:
источник