我使用Packer来构build一个基于Ubuntu 14.04的Docker镜像,也就是在我的Packer模板中:
"builders": [{ "type": "docker", "image": "ubuntu", "commit": true }],
我使用以下方式构build它:
$ 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" ] }
但是,虽然这确实设置了语言环境configuration,但并不影响docker run使用的env。 即使我添加额外的出口线如:
{ "type": "shell", "inline": [ ... "export LANG=en_GB.UTF-8" ] }
它们没有任何作用,大概是因为在使用docker run ,最初运行这些命令时,它不是命令packer build使用的subprocess。
作为一种解决方法,我可以将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