In meiner Docker-Datei:
ENV PROJECTNAME mytestwebsite
CMD ["django-admin", "startproject", "$PROJECTNAME"]
Error:
CommandError: '$PROJECTNAME' is not a valid project name
Was ist hier die schnellste Problemumgehung? Hat Docker Pläne, diese Funktionalität in späteren Versionen von Docker zu "reparieren" oder einzuführen?
HINWEIS: Wenn ich die CMD-Zeile aus der Docker-Datei entferne und dann den Docker-Container ausführe, kann ich das Django-admin-Startprojekt $ PROJECTNAME manuell aus dem Container heraus ausführen und das Projekt erstellen ...
docker
dockerfile
David
quelle
quelle
$PROJECTNAME
?Antworten:
Wenn Sie eine Ausführungsliste verwenden, wie in ...
... dann führt Docker den angegebenen Befehl direkt aus , ohne eine Shell einzubeziehen. Da keine Shell beteiligt ist, bedeutet dies:
>
,<
,|
, usw.command1; command2
Wenn Sie
CMD
Variablen erweitern möchten , müssen Sie eine Shell einrichten. Sie können das so machen:Oder Sie können eine einfache Zeichenfolge anstelle einer Ausführungsliste verwenden, wodurch Sie ein Ergebnis erhalten, das weitgehend mit dem vorherigen Beispiel identisch ist:
quelle
Wenn Sie den Wert zur Laufzeit verwenden möchten, legen Sie den
ENV
Wert in derDockerfile
. Wenn Sie es zur Erstellungszeit verwenden möchten, sollten Sie es verwendenARG
.Beispiel:
Übergeben Sie den Wert im Befehl build:
quelle
Nehmen wir an, Sie möchten einen Java-Prozess in einem Container starten:
Beispiel Dockerfile-Auszug:
Beispiel entrypoint.sh Auszug:
quelle
Inspiriert von oben habe ich Folgendes getan:
quelle