WORKDIR
A instrução WORKDIR
em um Dockerfile define o diretório de trabalho para qualquer instrução RUN
, CMD
, ENTRYPOINT
, COPY
, ou ADD
que venha após ela no Dockerfile. Se o diretório especificado não existir, ele será criado automaticamente.
Sintaxe Básica
Funcionalidade
Definir o Diretório Atual: Após a execução de um comando
WORKDIR
, todos os comandos subsequentes no Dockerfile são executados nesse diretório, a menos que um comando subsequente altere o diretório de trabalho.Criação Automática de Diretórios: Se o caminho especificado no
WORKDIR
não existir, o Docker o criará automaticamente. Isso permite que você organize melhor o sistema de arquivos do contêiner sem a necessidade de comandosRUN
para criar diretórios.
Exemplos de Uso
Definir o Diretório de Trabalho para uma Aplicação
Neste exemplo:
O
WORKDIR /usr/src/app
define/usr/src/app
como o diretório de trabalho.Os comandos
COPY
,RUN
, eCMD
subsequentes assumem que o diretório de trabalho atual é/usr/src/app
.
Trabalhar com Múltiplos Diretórios
Você pode usar várias instruções WORKDIR
para organizar a estrutura do contêiner:
Neste exemplo:
A primeira instrução
WORKDIR
define o diretório/usr/src/dependencies
para instalar as dependências.Em seguida, um segundo
WORKDIR
muda o diretório para/usr/src/app
para copiar o código da aplicação e definir o comando de inicialização.
Considerações
Evitando Caminhos Relativos: É uma boa prática usar caminhos absolutos com
WORKDIR
, pois caminhos relativos podem causar comportamento inesperado.Combinando com
RUN
: Embora você possa usarRUN cd /path/to/dir
dentro de um comandoRUN
, o uso deWORKDIR
é preferível, pois permanece ativo para todos os comandos subsequentes e torna o Dockerfile mais legível e organizado.
Comportamento com Múltiplos WORKDIR
WORKDIR
Se você definir WORKDIR
várias vezes no mesmo Dockerfile, o diretório de trabalho atual será atualizado, mas o comando WORKDIR
anterior não será desfeito.
Nesse exemplo:
O primeiro comando
WORKDIR
define/app
como o diretório de trabalho.O segundo
WORKDIR
redefine o diretório de trabalho para/app/subdir
.
O uso do WORKDIR
facilita a construção de imagens Docker organizadas e consistentes, garantindo que os arquivos e comandos sejam sempre executados no contexto certo.
Laboratório
O uso do WORKDIR seria basicamente criar e entrar num diretório:
Se a imagem abaixo for construída e um container for executado baseado nesta imagem, é possível visualizar os diretórios desta distribuição:
Alterando e reconstruindo a imagem para utilizar WORKDIR é possível verificar que o diretório /app
foi criado e ao iniciar o container o diretório inicial foi /app
ao invés de /
:
Destaque para a inclusão do WORKDIR na construção da imagem:
Last updated