Как установить языковой стандарт при создании образа Ubuntu Docker с помощью Packer?
Я использую Packer для создания образа Docker на основе 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, используемый при запуске docker. Даже если я добавлю дополнительные строки экспорта, такие как:
{
"type": "shell",
"inline": [
...
"export LANG=en_GB.UTF-8"
]
}
они не имеют никакого эффекта, вероятно, потому что при использовании docker run
это не дочерний процесс команды packer build
используется при запуске этих команд изначально.
В качестве обходного пути я могу передать env vars 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
0 ответов
Я не пробовал это, но согласно документации, вы должны быть в состоянии сделать это, используя docker-import
постпроцессор: https://www.packer.io/docs/post-processors/docker-import.html
Пример:
{
"type": "docker-import",
"repository": "local/ubuntu",
"tag": "latest",
"changes": [
"ENV LC_ALL en_GB.UTF-8"
]
}