【问题标题】:How to set timezone and locale on a Wildfly Docker image?如何在 Wildfly Docker 映像上设置时区和语言环境?
【发布时间】:2019-08-17 07:19:01
【问题描述】:
Docker Hub 上可用的The official Wildfly image 将时区设置为 UTC,并且不存在区域设置配置。
图像具有以下依赖树:
jboss/wildfly
└── jboss/base-jdk:11
└── jboss/base
└── centos:7
基于此,我使用以下命令检查了时区/语言环境配置:
docker exec -t <id> locale
docker exec -t <id> cat /etc/localtime
如何在 Dockerfile 上设置适当的时区和语言环境信息?
【问题讨论】:
标签:
docker
jboss
centos
dockerfile
wildfly
【解决方案1】:
这是我在检查了基础镜像的 Dockerfiles 和 CentOS 文档后提出的解决方案:
以下 Dockerfile 示例将圣保罗、巴西时区和巴西葡萄牙语设置为区域设置,您可以更改时区/区域设置以适应自己的需要:
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
...
【解决方案2】:
在大多数情况下,您可以使用标准 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