Estou usando o Packer para criar uma imagem do Docker baseada no Ubuntu 14.04, ou seja, no meu modelo Packer eu tenho:
"builders": [{
"type": "docker",
"image": "ubuntu",
"commit": true
}],
e eu construo usando:
$ packer build my.json
O que preciso colocar no modelo para obter uma localidade específica (digamos en_GB
) a ser definida quando eu executar o seguinte?
$ sudo docker run %IMAGE_ID% locale
Como está, eu recebo:
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
...
LC_IDENTIFICATION="POSIX"
LC_ALL=
que causa alguns problemas para coisas que quero fazer, como instalar certos pacotes do Python.
Eu tentei adicionar:
{
"type": "shell",
"inline": [
"locale-gen en_GB.UTF-8",
"update-locale LANG=en_GB.UTF-8 LANGUAGE=en_GB.UTF-8 LC_ALL=en_GB.UTF-8"
]
}
mas enquanto isso configura a configuração de localidade, ela não afeta o env usado pela execução do docker. Mesmo se eu adicionar linhas de exportação extras como:
{
"type": "shell",
"inline": [
...
"export LANG=en_GB.UTF-8"
]
}
eles não têm efeito, presumivelmente porque, ao usar docker run
, não é um processo filho do comando packer build
quando se executam esses comandos inicialmente.
Como solução alternativa, posso passar env vars para docker run
, mas não quero fazer isso toda vez, por exemplo:
sudo docker run -e LANG=en_GB.UTF-8 -e LANGUAGE=en_GB.UTF-8 -e LC_ALL=en_GB.UTF-8 %IMAGE_ID% locale
Tags docker localization ubuntu packer