Dentro do meu Dockerfile:
ENV PROJECTNAME mytestwebsite
CMD ["django-admin", "startproject", "$PROJECTNAME"]
Erro:
CommandError: '$PROJECTNAME' is not a valid project name
Qual é a solução mais rápida aqui? O Docker tem algum plano para "consertar" ou introduzir essa funcionalidade em versões posteriores do Docker?
NOTA: Se eu remover a linha CMD do arquivo Docker e, em seguida, executar o contêiner do Docker, poderei executar manualmente o Django-admin startproject $ PROJECTNAME de dentro do contêiner e ele criará o projeto ...
docker
dockerfile
david
fonte
fonte
$PROJECTNAME
?Respostas:
Quando você usa uma lista de execução, como em ...
... então o Docker executará o comando fornecido diretamente , sem envolver um shell. Como não há shell envolvido, isso significa:
>
,<
,|
, etccommand1; command2
Se você deseja
CMD
expandir as variáveis, é necessário providenciar um shell. Você pode fazer isso assim:Ou você pode usar uma string simples em vez de uma lista de execução, o que fornece um resultado praticamente idêntico ao do exemplo anterior:
fonte
Se você deseja usar o valor no tempo de execução, defina o
ENV
valor noDockerfile
. Se você quiser usá-lo em tempo de construção, você deve usarARG
.Exemplo:
Passe o valor no comando build:
fonte
Digamos que você queira iniciar um processo java dentro de um contêiner:
Exemplo de trecho do Dockerfile:
Exemplo de trecho entrypoint.sh:
fonte
Inspirado acima, fiz o seguinte:
fonte