Как установить языковой стандарт при создании образа 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"
  ]
}
Другие вопросы по тегам