Я использую Packer для создания изображения Докера на основе Ubuntu 14.04, т.е. в моем шаблоне Packer я имею:
"builders": [{
"type": "docker",
"image": "ubuntu",
"commit": true
}],
и я создаю его использование:
$ packer build my.json
Что я должен вставить шаблон для получения, определенная локаль (скажите en_GB
) быть установленным, когда я впоследствии выполняю следующее?
$ sudo docker run %IMAGE_ID% locale
В настоящий момент я добираюсь:
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
...
LC_IDENTIFICATION="POSIX"
LC_ALL=
который вызывает несколько проблем для вещей, я хочу сделать затем, как установка определенных пакетов Python.
Я попытался добавить:
{
"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"
]
}
но в то время как это действительно настраивает конфигурацию локали, она не влияет на ENV, используемый выполненным докером. Даже если я добавляю дополнительные строки экспорта как:
{
"type": "shell",
"inline": [
...
"export LANG=en_GB.UTF-8"
]
}
они не имеют никакого эффекта, по-видимому, потому что при использовании docker run
, это не дочерний процесс команды packer build
использование при выполнении этих команд первоначально.
Как обходное решение я могу передать огибающий Вар docker run
, но не хочу должным быть делать тот каждый раз, например:
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
Я не пробовал, но, согласно документации, вы сможете сделать это с помощью постпроцессора docker-import
: https: //www.packer.io/docs/post-processors/docker-import.html[1247ptingExample:
{
"type": "docker-import",
"repository": "local/ubuntu",
"tag": "latest",
"changes": [
"ENV LC_ALL en_GB.UTF-8"
]
}