A desvantagem de usar docker exec
é que ele requer um contêiner em execução ; portanto, docker inspect -f
pode ser útil se você não tiver certeza de que um contêiner está em execução.
Exemplo 1. Saída uma lista de variáveis de ambiente separadas por espaço no contêiner especificado:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{$value}} {{end}}' container_name
a saída ficará assim:
ENV_VAR1=value1 ENV_VAR2=value2 ENV_VAR3=value3
Exemplo # 2. Saída cada env var na nova linha e grep
os itens necessários, por exemplo, as configurações do contêiner do mysql podem ser recuperadas assim:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{println $value}}{{end}}' \
container_name | grep MYSQL_
irá produzir:
MYSQL_PASSWORD=secret
MYSQL_ROOT_PASSWORD=supersecret
MYSQL_USER=demo
MYSQL_DATABASE=demodb
MYSQL_MAJOR=5.5
MYSQL_VERSION=5.5.52
Exemplo # 3. Vamos modificar o exemplo acima para obter uma saída amigável do bash, que pode ser usada diretamente em seus scripts:
docker inspect -f \
'{{range $index, $value := .Config.Env}}export {{$value}}{{println}}{{end}}' \
container_name | grep MYSQL
irá produzir:
export MYSQL_PASSWORD=secret
export MYSQL_ROOT_PASSWORD=supersecret
export MYSQL_USER=demo
export MYSQL_DATABASE=demodb
export MYSQL_MAJOR=5.5
export MYSQL_VERSION=5.5.52
Se você quiser aprofundar, vá para a documentação do pacote de texto / modelo do Go com todos os detalhes do formato.