
Eu estava fazendo um tutorial online para aprender sobre dockerfiles. Houve uma pergunta do quiz:
O comando Dockerfile WORKDIR altera os diretórios:
- apenas para o resto do Dockerfile
- bem como na imagem finalizada.
Minha seleção (errada) foi: "1. somente no restante do Dockerfile".
Alguém poderia me corrigir dando um exemplo em que a segunda resposta (correta) poderia ser benéfica?
Responder1
Muitas vezes você precisa executar código de um diretório específico, pode ser que o aplicativo que você está executando manipule arquivos no diretório atual, pode ser que o aplicativo espere configuração no diretório atual, pode ser apenas que o o aplicativo está localizado no diretório atual. WORKDIR
permite que o criador da imagem configure isso para que as pessoas que executam o contêiner não precisem se preocupar com isso.
Por exemplo; um caso de uso que tive antes foi a criação de um contêiner docker com um aplicativo que manipula arquivos no diretório atual. Sem configuração, WORKDIR
você teria que vincular o volume a um local e depois executar cd /location
cada comando:
docker -v $PWD:/location someimage "cd /location; somecommand"
Ao definir WORKDIR
como /location
você pode eliminar cd
:
docker -v $PWD:/location someimage somecommand
O que é muito mais conveniente.