如何在 Wildfly Docker 图像上设置时区和语言环境?

How to set timezone and locale on a Wildfly Docker image?

The official Wildfly image 在 Docker 上可用 Hub 的时区设置为 UTC,并且不存在区域设置。

图像具有以下依赖关系树:

jboss/wildfly
└── jboss/base-jdk:11
    └── jboss/base
        └── centos:7

基于此,我使用以下命令检查了 timezone/locale 配置:

docker exec -t <id> locale
docker exec -t <id> cat /etc/localtime

如何在 Docker 文件上设置适当的时区和区域设置信息?

这是我在查看基础镜像的 Dockerfiles 和 CentOS 文档后得出的解决方案:

以下 Dockerfile 示例将巴西圣保罗时区和巴西葡萄牙语设置为语言环境,可以根据需要更改 timezone/locale:

FROM jboss/wildfly:10.1.0.Final

USER root

RUN localedef -i pt_BR -f UTF-8 pt_BR.UTF-8
RUN echo "LANG=\"pt_BR.UTF-8\"" > /etc/locale.conf
RUN ln -s -f /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

USER jboss

ENV LANG pt_BR.UTF-8
ENV LANGUAGE pt_BR.UTF-8
ENV LC_ALL pt_BR.UTF-8
...

在大多数情况下,您可以使用标准 Linux 环境变量 TZ、LANG 和 LANGUAGE 调整语言和时区。请参阅以下示例:

docker run -e TZ="America/Sao_Paulo" \
   -e LANG="pt_BR.UTF-8" \
   -e LANGUAGE="pt_BR.UTF-8" \
   -e LC_ALL="pt_BR.UTF-8" \
   -it jboss/wildfly

这将在运行时更改语言和时区。如果你想改变语言和时区,你也可以像 Fábio

提到的那样改变 Dockerfile