ARG
A instrução ARG
em um Dockerfile é usada para definir variáveis de build-time (tempo de construção) que podem ser passadas como argumentos ao construir uma imagem Docker. Essas variáveis permitem que você personalize o processo de construção da imagem sem precisar modificar o Dockerfile diretamente.
Sintaxe Básica
NOME_DO_ARG
: O nome do argumento que você deseja definir. Pode ser utilizado posteriormente no Dockerfile.valor padrão
(opcional): Um valor padrão que será usado caso o argumento não seja fornecido durante a construção da imagem.
Funcionalidades do ARG
ARG
Flexibilidade na Construção:
ARG
permite que você passe diferentes valores de argumento durante o processo de construção, tornando seu Dockerfile mais flexível e reutilizável.Valores Padrão: Se um valor padrão for fornecido no
ARG
, ele será usado se o argumento não for especificado ao construir a imagem.
Exemplos de Uso
Definir um Argumento Simples
Neste exemplo, o argumento VERSAO_BASE
é definido e utilizado na instrução RUN
. Se o valor de VERSAO_BASE
não for fornecido durante a construção, ele será tratado como vazio.
Usar ARG
com Valor Padrão
Aqui, o argumento VERSAO_BASE
tem um valor padrão de 1.0
. Se o valor não for passado durante a construção, 1.0
será usado.
Passando Argumentos Durante a Construção
Você pode passar argumentos para a construção da imagem usando a flag --build-arg
com o comando docker build
:
Neste comando, o valor 2.0
é passado para o argumento VERSAO_BASE
durante a construção da imagem.
Uso de ARG
com ENV
ARG
com ENV
Embora os argumentos ARG
sejam usados principalmente durante o tempo de construção, você pode combiná-los com a instrução ENV
para definir variáveis de ambiente que estarão disponíveis no contêiner em execução.
Neste exemplo, o argumento AMBIENTE
é usado para definir a variável de ambiente NODE_ENV
. Assim, o valor passado durante a construção determinará o ambiente de execução no contêiner.
Boas Práticas e Considerações
Uso Limitado:
ARG
é apenas para uso durante a construção da imagem. As variáveis definidas comARG
não estarão disponíveis no contêiner em tempo de execução, a menos que sejam explicitamente passadas paraENV
ou usadas em outras instruções.Compatibilidade com Cache: Mudanças nos valores de
ARG
podem invalidar o cache de construção, fazendo com que as instruções subsequentes sejam reconstruídas. UseARG
estrategicamente para maximizar a eficiência do cache.Exposição Limitada: Diferente das variáveis de ambiente (
ENV
), os valores deARG
não são expostos automaticamente ao contêiner em execução, o que pode ser uma vantagem de segurança em alguns cenários.
Exemplos Avançados
Usando ARG
para Escolher uma Imagem Base
Neste exemplo, o argumento IMAGEM_BASE
define qual imagem base será usada para construir a imagem Docker. Isso permite que você altere facilmente a base da imagem sem modificar o Dockerfile.
Passando Múltiplos Argumentos
Neste exemplo, PIP_INDEX_URL
permite especificar um repositório Python alternativo para instalar as dependências, o que pode ser útil em ambientes que utilizam repositórios privados.
Resumo
ARG
define variáveis de build-time que podem ser passadas como argumentos durante a construção da imagem Docker.Flexibilidade:
ARG
oferece flexibilidade ao permitir que você personalize a construção da imagem sem modificar o Dockerfile.Uso em Tempo de Construção: Os valores de
ARG
só estão disponíveis durante a construção da imagem, não em tempo de execução, a menos que sejam passados paraENV
.
Laboratório
Alterar o arquivo em tempo de execução do container:
Quando o argumento é alterado, o cache não é utilizado para construção da camada de arquivo.
Se o valor do argumento for alterado em tempo de execução, a boa prática seria colocar o arquivo mais abaixo no Dockerfile para aproveitar todas as camadas de cache possível
Last updated