Posted by & filed under Uncategorized.

O reuso de build em Docker é uma prática que proporciona ganhos de performance e flexibilidade no processo de criação de imagens. Ao entender como utilizar argumentos e variáveis, é possível otimizar os builds e adaptar as configurações de forma dinâmica.

No contexto dos Dockerfiles, os parâmetros reutilizáveis desempenham um papel fundamental. Eles permitem que desenvolvedores definam valores que podem ser facilmente alterados sem a necessidade de reescrever o arquivo inteiro, facilitando a personalização de ambientes e a gestão de diferentes versões da aplicação.

Este artigo explora as melhores práticas para implementar argumentos e variáveis, destacando como essas técnicas podem simplificar o processo de desenvolvimento e implantação, gerando imagens Docker mais eficientes e adaptáveis.

Como Usar Argumentos e Variáveis no Dockerfile

Os argumentos e variáveis em um Dockerfile permitem criar imagens customiz e reutilizáveis de maneira flexível. Ao definir argumentos, você pode modificar o comportamento da sua imagem durante o processo de build.

Para declarar um argumento, utilize a diretiva ARG. Este argumento pode ser passado no momento da construção da imagem com a opção --build-arg. Isso é útil quando se deseja especificar configurações que podem variar, como versões de pacotes ou referências de bibliotecas.

Uma vez que o argumento é declarado, ele pode ser utilizado durante o build, como parte de comandos RUN, COPY e ENV. É importante lembrar que os argumentos têm um escopo limitado ao momento do build e não estarão disponíveis na imagem resultante.

Além disso, as variáveis de ambiente, definidas por ENV, também oferecem uma maneira eficaz de parametrizar sua imagem. Diferentemente dos argumentos, as variáveis de ambiente existem na imagem final, permitindo que outras partes do aplicativo acessem valores dinâmicos durante a execução.

A combinação de argumentos e variáveis de ambiente possibilita a criação de imagens altamente personalizáveis, que se adequam a diferentes cenários de uso e facilitam a manutenção de um ambiente de desenvolvimento coeso.

ARG vs ENV: Qual a Diferença Crucial?

No Docker, a utilização de variáveis é fundamental para tornar as imagens customizadas mais flexíveis e dinâmicas. Duas das principais formas de definir variáveis em um Dockerfile são os comandos ARG e ENV, que têm propósitos distintos.

O comando ARG permite definir parâmetros dinâmicos que podem ser passados durante a construção da imagem. Esses valores default são especificados para facilitar a configuração conforme as necessidades do desenvolvedor, podendo ser substituídos através de argumentos de construção. No entanto, esses argumentos não estão disponíveis no runtime do contêiner.

Por outro lado, ENV é usado para definir variáveis de ambiente que estarão acessíveis durante a execução do contêiner. Essas variáveis podem ser usadas em scripts ou aplicações em execução, influenciando o comportamento delas. Diferente de ARG, as variáveis definidas com ENV persistem após a construção da imagem.

Em resumo, a principal diferença entre ARG e ENV reside no escopo de uso: ARG é focado em valores durante a construção da imagem, enquanto ENV se concentra em valores para runtime. Para mais informações sobre como aplicar essas variáveis de forma eficaz, visite https://mundodocker.com.br/.

Como Definir ARG para Customizar a Build?

A instrução ARG no Dockerfile permite definir variáveis que podem ser usadas durante o processo de construção da imagem. Diferentemente das variáveis de ambiente (ENV), os ARG não persistem na imagem final.

Definir ARG é ideal para criar imagens customizadas sem modificar o Dockerfile diretamente. Você pode injetar valores dinamicamente durante a build, facilitando a criação de imagens com diferentes configurações, sem precisar alterar o código do Dockerfile.

Para usar, siga estes passos:

  1. Defina a variável com ARG nome_da_variavel no Dockerfile. Se desejar, atribua um valor padrão com ARG nome_da_variavel=valor_padrao.
  2. Utilize a variável dentro do Dockerfile com a sintaxe ${nome_da_variavel}.
  3. Passe o valor desejado durante a construção da imagem usando o parâmetro docker build --build-arg nome_da_variavel=novo_valor .

Exemplo:

Dockerfile:


ARG VERSAO=latest
FROM ubuntu:${VERSAO}
RUN apt-get update && apt-get install -y --no-install-recommends curl

Build:


docker build --build-arg VERSAO=20.04 .

Este exemplo mostra como alterar a versão do Ubuntu usada na imagem. A chave é usar docker build --build-arg. Sem este argumento, o valor padrão (“latest”) será usado.

O uso de ARG promove reuso de build e cria parâmetros reutilizáveis, simplificando o processo de geração de imagens Docker para diferentes ambientes ou necessidades.

Considere usar ARG para:

  • Versões de software a serem instaladas.
  • URLs de download de arquivos.
  • Configurações de ambiente que variam entre builds.

Usando ENV para Configurar o Container em Tempo de Execução

Além de usar argumentos durante a construção da imagem Docker, é importante considerar variáveis de ambiente para configurar o container em tempo de execução. Dessa forma, você pode criar imagens customizadas que podem ser reutilizadas em diferentes ambientes e cenários.

A diretiva ENV no Dockerfile permite definir parâmetros reutilizáveis que podem ser acessados durante a execução do container. Isso é especialmente útil quando você precisa configurar o ambiente do container de acordo com as necessidades do usuário ou sistema.

Ao usar ENV, você garante práticas seguras de gerenciamento de configurações, pois os valores podem ser atualizados em tempo de execução sem necessidade de reconstruir a imagem. Isso é importante quando você precisa lidar com informações sensíveis, como chaves de API ou credenciais.

Ao contrário de ARG, que é apenas acessível durante a construção da imagem, ENV está disponível durante todo o ciclo de vida do container. Essa distinção entre arg vs env é crucial para entender quando usar cada um deles na construção de imagens customizadas.

Passando ARG via Linha de Comando: Exemplos Práticos

Ao trabalhar com Dockerfiles, é essencial entender a diferença entre ARG e ENV, e como utilizá-los de forma eficaz. Enquanto o ARG permite a passagem de parâmetros reutilizáveis durante a construção da imagem, o ENV é utilizado para configurar o container em tempo de execução.

Para passar ARGs via linha de comando, você pode utilizar o comando “docker build” com a opção “–build-arg”. Essa abordagem é especialmente útil quando você precisa criar imagens customizadas com parâmetros dinâmicos, como versões de software ou URLs de repositório.

Exemplo prático:

Suponha que você tenha um Dockerfile com a seguinte linha:

ARG APP_VERSION=1.0.0

Para construir a imagem com uma versão específica, você pode executar o seguinte comando:

docker build –build-arg APP_VERSION=2.0.0 -t minha-app:v2.0.0 .

Dessa forma, você está passando o valor “2.0.0” para o argumento “APP_VERSION” durante a construção da imagem, permitindo o reuso de build e a criação de imagens customizadas.

Além disso, você pode utilizar variáveis de ambiente (ENV) para configurar o container em tempo de execução, complementando o uso de ARGs na construção da imagem.