在普通服务器上,例如我通常会做的Linode VPS:
localectl set-locale LANG=<locale>.utf8
timedatectl set-timezone <timezone>
但是由于systemd不存在或者无法在容器上工作,我得到:
Failed to create bus connection: No such file or directory
现在,我的目标只是更改这些设置而不使用systemd ,但这种方法似乎没有记录。是否有参考配置工具的非系统替代品?
答案 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