Dans mon Dockerfile:
ENV PROJECTNAME mytestwebsite
CMD ["django-admin", "startproject", "$PROJECTNAME"]
Erreur:
CommandError: '$PROJECTNAME' is not a valid project name
Quelle est la solution de contournement la plus rapide ici? Docker a-t-il prévu de «réparer» ou d'introduire cette fonctionnalité dans les versions ultérieures de Docker?
REMARQUE: Si je supprime la ligne CMD du fichier Docker puis exécute le conteneur Docker, je suis en mesure d'exécuter manuellement Django-admin startproject $ PROJECTNAME depuis l'intérieur du conteneur et il créera le projet ...
docker
dockerfile
David
la source
la source
$PROJECTNAME
?Réponses:
Lorsque vous utilisez une liste d'exécution, comme dans ...
... alors Docker exécutera la commande donnée directement , sans impliquer un shell. Puisqu'il n'y a pas de shell impliqué, cela signifie:
>
,<
,|
, etc.command1; command2
Si vous voulez que vous
CMD
développiez des variables, vous devez organiser un shell. Vous pouvez le faire comme ceci:Ou vous pouvez utiliser une simple chaîne au lieu d'une liste d'exécution, ce qui vous donne un résultat largement identique à l'exemple précédent:
la source
Si vous souhaitez utiliser la valeur au moment de l'exécution, définissez la
ENV
valeur dans leDockerfile
. Si vous souhaitez l'utiliser au moment de la construction, vous devez utiliserARG
.Exemple :
Passez la valeur dans la commande build:
la source
Disons que vous souhaitez démarrer un processus java dans un conteneur:
Exemple d'extrait Dockerfile:
Exemple d'extrait entrypoint.sh:
la source
Inspiré ci-dessus, j'ai fait ceci:
la source