Como eu defino o local ao criar uma imagem do Docker do Ubuntu com o Packer?

3

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

Informações adicionais

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
    
por Toasty 14.10.2014 / 19:47

0 respostas