即使在明確患有的是心因性勃起障礙,需要正確的心理健康治療才能根治問題,仍是無可奈何地依靠服用犀利士、威而鋼等ED藥物。因為心理疾病難以完全治愈,一定條件下可從新觸發。

Dicas e Tutoriais Docker Notícias

Usando ARG e ENV no Dockerfile: Flexibilidade e Configuração para Imagens Docker

Variáveis de ambiente

O Dockerfile é uma ferramenta poderosa para definir e automatizar a criação de ambientes de execução para aplicações. Dois dos comandos mais úteis para tornar seus Dockerfiles mais flexíveis e configuráveis são ARG e ENV. Neste artigo, vamos explorar como usar essas instruções para criar imagens Docker dinâmicas e configuráveis.

O Que São ARG e ENV?

ARG e ENV são variáveis que podem ser definidas no Dockerfile para configurar o comportamento de sua imagem e contêiner. Ambos permitem a passagem de valores, mas têm usos e comportamentos distintos:

  • ARG (Argumento): Utilizado para definir variáveis durante o build da imagem. Essas variáveis só estão disponíveis durante a construção da imagem e não persistem no contêiner resultante.
  • ENV (Variável de Ambiente): Utilizado para definir variáveis de ambiente que persistem e estão disponíveis durante a execução do contêiner.

Como Usar ARG no Dockerfile

O comando ARG define variáveis que podem ser passadas para o Docker durante o processo de build. Essas variáveis são úteis quando você deseja parametrizar aspectos da construção da imagem.

Exemplo de Uso do ARG:

# Definindo um ARG com valor padrão
ARG VERSION=latest

# Usando o ARG para especificar a versão de uma imagem base
FROM ubuntu:${VERSION}

# Executando comandos com base no ARG
RUN apt-get update && apt-get install -y software-properties-common

# Adicionando mais pacotes específicos para a versão
RUN add-apt-repository ppa:deadsnakes/ppa \
&& apt-get install -y python3.8

Neste exemplo, o ARG VERSION=latest define uma variável VERSION que, por padrão, assume o valor “latest”. Se você deseja construir a imagem com uma versão específica do Ubuntu, pode passar essa versão no momento de build:

docker build --build-arg VERSION=20.04 -t my-ubuntu-image .

Isso permite flexibilidade na escolha da versão da imagem base sem precisar modificar o Dockerfile diretamente. Essa abordagem é especialmente útil quando você deseja criar diferentes versões da sua aplicação ou testar compatibilidade com diferentes ambientes.

Como Usar ENV no Dockerfile

A instrução ENV define variáveis de ambiente que estarão disponíveis tanto durante o processo de construção da imagem quanto na execução do contêiner. Essas variáveis são úteis para configurar a aplicação dentro do contêiner, como definir caminhos, chaves de API, ou qualquer outra configuração que sua aplicação necessite.

Exemplo de Uso do ENV:

# Definindo uma variável de ambiente
ENV APP_HOME=/usr/src/app

# Usando a variável de ambiente
WORKDIR $APP_HOME

# Copiando arquivos para o diretório de trabalho
COPY . .

# Definindo outra variável de ambiente
ENV PORT=8080

# Executando a aplicação
CMD ["python3", "app.py"]

Neste exemplo, o ENV APP_HOME=/usr/src/app define um diretório de trabalho para a aplicação. A variável APP_HOME é usada posteriormente com o comando WORKDIR para definir onde os arquivos serão copiados e onde o processo da aplicação será executado.

O ENV PORT=8080 define a porta na qual a aplicação será executada. Essa variável pode ser utilizada pelo código da aplicação para determinar em qual porta o servidor deve escutar.

Aprendendo na prática

Diferenças Entre ARG e ENV

Embora ambos permitam a definição de variáveis, existem diferenças fundamentais entre ARG e ENV:

  • Escopo de Aplicação: ARG está disponível apenas durante o processo de construção da imagem e não afeta o contêiner resultante. Em contraste, ENV define variáveis de ambiente que persistem durante a execução do contêiner.
  • Substituição: ENV pode ser sobrescrito no momento de execução do contêiner com o comando docker run -e, enquanto ARG pode ser sobrescrito apenas durante a construção com o comando docker build --build-arg.
  • Segurança: Como ARG é usado apenas durante o build, ele é mais seguro para definir valores sensíveis que não devem estar disponíveis no contêiner final. No entanto, para segurança adicional, é recomendável utilizar ferramentas especializadas para gerenciar segredos.

Combinando ARG e ENV

Você pode usar ARG e ENV juntos para criar uma imagem altamente configurável. Por exemplo, você pode usar um ARG para definir um valor padrão durante o build, que pode ser substituído por um ENV na execução do contêiner:

Exemplo Combinado:

# Definindo um ARG com valor padrão
ARG APP_PORT=3000

# Definindo uma variável de ambiente com base no ARG
ENV PORT=${APP_PORT}

# Usando a variável de ambiente
EXPOSE $PORT

# Comando para executar a aplicação
CMD ["node", "server.js"]

Neste exemplo, o ARG APP_PORT=3000 define a porta padrão durante o build. Essa porta é então passada para o ENV PORT, que será utilizada para expor a porta no contêiner. Esse valor pode ser sobrescrito tanto durante o build quanto durante a execução.

Boas Práticas ao Usar ARG e ENV

  1. Use ARG para Parametrizar Builds: Se você precisa de flexibilidade no processo de construção da imagem, utilize ARG. Isso permite que você reutilize o mesmo Dockerfile para diferentes versões ou configurações.
  2. Utilize ENV para Configurações Dinâmicas: ENV é ideal para definir configurações que podem variar entre ambientes de desenvolvimento, teste e produção. Permite também que essas variáveis sejam facilmente sobrescritas em tempo de execução.
  3. Combine ARG e ENV para Máxima Flexibilidade: Para um Dockerfile altamente dinâmico, combine ARG e ENV, permitindo que as variáveis sejam configuradas tanto no build quanto na execução.
  4. Evite Hardcoding: Em vez de codificar valores diretamente no Dockerfile, utilize ARG e ENV para definir valores configuráveis, tornando suas imagens mais flexíveis e fáceis de manter.

Conclusão

ARG e ENV são instruções poderosas no Dockerfile que oferecem uma maneira eficiente de tornar suas imagens Docker mais dinâmicas e configuráveis. Compreender as diferenças e saber quando usar cada uma delas permitirá que você crie ambientes de contêiner mais robustos, flexíveis e fáceis de adaptar a diferentes cenários. Ao seguir as práticas recomendadas, você pode garantir que seu Dockerfile seja eficiente e que suas aplicações rodem de forma consistente, independentemente do ambiente.

About the author

Danilo Filitto

Mestre em Ciência da Computação pela Universidade Estadual de Maringá - UEM, Pós-Graduado em Redes de Computadores e Comunicação de Dados pela Universidade do Estado do Paraná - UEL, Bacharel em Ciência da Computação pela Universidade do Oeste Paulista - UNOESTE.

Atuo na área acadêmica como professor desde 2006. Atualmente leciono na UNOESTE (Universidade do Oeste Paulista), no SENAC (Serviço Nacional de Aprendizagem Comercial) e possuo vários cursos na Udemy (https://www.udemy.com/user/danilo-filitto/).

Além disso, sou o CEO dos sites https:www.dfilitto.com.br e https:www.makeindiegames.com.br

Você também pode me encontrar no YouTube por meio do endereço https://www.youtube.com/danilofilittoppr

Add Comment

Click here to post a comment

Aprenda a criar seus próprios jogos

Cursos em promoção

Cursos em destaque

Quer aprender a programar?

Aprenda a criar seus próprios jogos com os melhores desenvolvedores