如何更改Fedora Docker容器上的区域设置?

如何更改Fedora Docker容器上的区域设置?,docker,fedora,Docker,Fedora,在普通服务器上,例如Linode VPS上,我通常会执行以下操作: localectl set-locale LANG=<locale>.utf8 timedatectl set-timezone <timezone> 现在,我的目标是在不使用systemd的情况下更改这些设置,但这种方法似乎没有文档记录。是否有非系统配置工具的参考资料?关于arch wiki中语言环境设置的一些文档: 在Dockerfile中,将LANG调整到所需的区域设置。您可以在/etc/loca

在普通服务器上,例如Linode VPS上,我通常会执行以下操作:

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

现在,我的目标是在不使用systemd的情况下更改这些设置,但这种方法似乎没有文档记录。是否有非系统配置工具的参考资料?

关于arch wiki中语言环境设置的一些文档:

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

适用于debian、arch,但在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

将其放入您的
Dockerfile

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

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

TZ='Asia/Kolkata'
export TZ

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

基于sti base中使用的一种技术,我提出了以下解决方法:

BASH_ENV
包括非交互式
BASH
会话,
ENV
包括
sh
会话,
PROMPT_命令
包括交互式
BASH
会话

这似乎是Debian与locale gen的等价物:

RUN localedef -v -c -i fr_FR -f UTF-8 fr_FR.UTF-8 || true
# 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"
RUN localedef -v -c -i fr_FR -f UTF-8 fr_FR.UTF-8 || true