Que eu saiba, apenas ENV
permite que, conforme mencionado em " Substituição do ambiente "
As variáveis de ambiente (declaradas com a ENV
instrução) também podem ser usadas em determinadas instruções como variáveis a serem interpretadas pelo Dockerfile.
Eles precisam ser variáveis de ambiente para serem redeclarados em cada novo contêiner criado para cada linha do Dockerfile docker build
.
Em outras palavras, essas variáveis não são interpretadas diretamente em um Dockerfile, mas em um contêiner criado para uma linha Dockerfile, daí o uso da variável de ambiente.
Neste dia, eu uso os dois ARG
( docker 1.10+ edocker build --build-arg var=value
) e ENV
.
Usar ARG
sozinho significa que sua variável é visível no tempo de construção, não no tempo de execução.
Meu Dockerfile geralmente possui:
ARG var
ENV var=${var}
No seu caso, ARG
basta: eu o uso normalmente para definir a variável http_proxy, para que a construção do docker precise acessar a Internet no momento da construção.