如何更改Fedora Docker容器上的语言环境设置?

时间:2018-03-09 16:21:04

标签: docker fedora

在普通服务器上,例如我通常会做的Linode VPS:

localectl set-locale LANG=<locale>.utf8
timedatectl set-timezone <timezone>

但是由于systemd不存在或者无法在容器上工作,我得到:

Failed to create bus connection: No such file or directory

现在,我的目标只是更改这些设置而不使用systemd ,但这种方法似乎没有记录。是否有参考配置工具的非系统替代品?

4 个答案:

答案 0 :(得分:0)

有关arch wiki中的区域设置的一些文档:https://wiki.archlinux.org/index.php/locale

在Dockerfile中,将LANG调整为所需的区域设置。您可以在/etc/locale.gen中添加多个区域设置,以便稍后进行选择。

适用于debian,arch,但locale-gen错过了fedora:

ENV LANG=en_US.utf8
RUN echo "$LANG UTF-8" >> /etc/locale.gen
RUN locale-gen
RUN update-locale --reset LANG=$LANG

更一般的是localedef,也适用于Fedora:

ENV LANG=en_US.UTF-8
localedef --verbose --force -i en_US -f UTF-8 en_US.UTF-8

答案 1 :(得分:0)

将其放入Dockerfile

ENV TZ=America/Denver
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

答案 2 :(得分:0)

从根目录编辑.bash_profile或.bashrc并添加以下内容。

TZ='Asia/Kolkata'
export TZ

保存文件并在完成后提交图像。

答案 3 :(得分:0)

基于sti-base中使用的技术,我为https://github.com/ncoghlan/fedbuildenv/blob/09a18d91e7af64a45394669bac2595a4b628960d/Dockerfile#L26提出了以下解决方法:

# Set a useful default locale
RUN echo "export LANG=en_US.utf-8" > /opt/export_LANG.sh
ENV BASH_ENV=/opt/export_LANG.sh \
    ENV=/opt/export_LANG.sh \
    PROMPT_COMMAND="source /opt/export_LANG.sh"

BASH_ENV涵盖非交互式bash会话,ENV涵盖sh会话,而PROMPT_COMMAND涵盖交互式bash会话。

这似乎与debians的locale-gen等效:

RUN localedef -v -c -i fr_FR -f UTF-8 fr_FR.UTF-8 || true