Dentro de mi Dockerfile:
ENV PROJECTNAME mytestwebsite
CMD ["django-admin", "startproject", "$PROJECTNAME"]
Error:
CommandError: '$PROJECTNAME' is not a valid project name
¿Cuál es la solución más rápida aquí? ¿Tiene Docker algún plan para "arreglar" o introducir esta funcionalidad en versiones posteriores de Docker?
NOTA: Si elimino la línea CMD del archivo Docker y luego ejecuto el contenedor Docker, puedo ejecutar manualmente Django-admin startproject $ PROJECTNAME desde el interior del contenedor y creará el proyecto ...
docker
dockerfile
david
fuente
fuente
$PROJECTNAME
?Respuestas:
Cuando usa una lista de ejecución, como en ...
... entonces Docker ejecutará el comando dado directamente , sin involucrar un shell. Dado que no hay shell involucrado, eso significa:
>
,<
,|
, etc.command1; command2
Si desea
CMD
expandir las variables, debe organizar un shell. Puedes hacerlo así:O puede usar una cadena simple en lugar de una lista de ejecución, lo que le da un resultado en gran parte idéntico al ejemplo anterior:
fuente
Si desea utilizar el valor en tiempo de ejecución, establezca el
ENV
valor enDockerfile
. Si desea usarlo en el momento de la compilación, debe usarARG
.Ejemplo:
Pase el valor en el comando de compilación:
fuente
Digamos que desea iniciar un proceso de Java dentro de un contenedor:
Ejemplo de extracto de Dockerfile:
Ejemplo de extracto de entrypoint.sh:
fuente
Inspirado en lo anterior, hice esto:
fuente