centos 如何在Docker Alpine中设置区域设置?

s4n0splo  于 2022-11-07  发布在  Docker
关注(0)|答案(3)|浏览(325)

我可以使用CentOS映像设置区域设置

FROM centos

ENV LANG en_US.UTF-8

ENV LC_ALL en_US.UTF-8

但它似乎不工作与阿尔卑斯山的形象。我怎么能设置与阿尔卑斯山的形象地区?

pod7payv

pod7payv1#

这对我很有效,Dockerfile:

FROM openjdk:8-jdk-alpine

RUN apk update
RUN apk add tzdata
RUN cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
RUN rm -r /usr/share/zoneinfo/Africa && \
    rm -r /usr/share/zoneinfo/Antarctica && \
    rm -r /usr/share/zoneinfo/Arctic && \
    rm -r /usr/share/zoneinfo/Asia && \
    rm -r /usr/share/zoneinfo/Atlantic && \
    rm -r /usr/share/zoneinfo/Australia && \
    rm -r /usr/share/zoneinfo/Europe  && \
    rm -r /usr/share/zoneinfo/Indian && \
    rm -r /usr/share/zoneinfo/Mexico && \
    rm -r /usr/share/zoneinfo/Pacific && \
    rm -r /usr/share/zoneinfo/Chile && \
    rm -r /usr/share/zoneinfo/Canada
RUN echo "America/Sao_Paulo" >  /etc/timezone

ENV TZ America/Sao_Paulo
ENV LANG pt_BR.UTF-8
ENV LANGUAGE pt_BR.UTF-8
ENV LC_ALL pt_BR.UTF-8

ARG JAR_FILE
ADD ${JAR_FILE} /app/
RUN mv /app/${JAR_FILE} /app/app.jar
ENTRYPOINT java $JAVA_OPTS -jar /app/app.jar
xa9qqrwz

xa9qqrwz2#

这是我在Alpine Linux中容器化应用程序时设置时间和编码的方式。
自Alpine Linux 3.16版起,以下各项经过测试,可以正常工作:
Dockerfile中:
安装所需的软件包:

RUN apk add --no-cache --update musl musl-utils musl-locales tzdata

/usr/share/zoneinfo/中的选项设置时区:

ENV TZ=Europe/London
RUN cp /usr/share/zoneinfo/Europe/London /etc/localtime

/usr/share/i18n/locales/musl中,Musl将安装以下编码:

cs_CZ.UTF-8
de_CH.UTF-8
de_DE.UTF-8
en_GB.UTF-8
en_US.UTF-8
es_ES.UTF-8
fi_FI.UTF-8
fr_FR.UTF-8
it_IT.UTF-8
nb_NO.UTF-8
nl_NL.UTF-8
pt_BR.UTF-8
pt_PT.UTF-8
ru_RU.UTF-8
sr_RS.UTF-8
sv_SE.UTF-8

如果您不想在Docker文件的以下行中使用GB英语,请从上面的列表中选择您的首选编码,并将其替换为en_GB.UTF-8

RUN echo 'export LC_ALL=en_GB.UTF-8' >> /etc/profile.d/locale.sh && \
  sed -i 's|LANG=C.UTF-8|LANG=en_GB.UTF-8|' /etc/profile.d/locale.sh

虽然您必须对LANG=参数执行sed操作,但通过将export LC_ALL=追加到/etc/profile.d/locale.sh的末尾,其余操作就可以完成了。
在生成之后,现在执行以下操作时:

locale

您将看到默认编码已更改C.UTF-8en_GB.UTF-8

bash-5.1# locale
LANG=en_GB.UTF-8
LC_CTYPE=en_GB.UTF-8
LC_NUMERIC=en_GB.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE=en_GB.UTF-8
LC_MONETARY=en_GB.UTF-8
LC_MESSAGES=en_GB.UTF-8
LC_ALL=en_GB.UTF-8
bash-5.1#

当您执行以下操作时:

date

您会注意到时间现在已更改UTCBST

Mon Jul 18 16:59:51 BST 2022

最后,关于Alpine的Musl环境实现HERE的一些值得一阅读的注解

yb3bgrhw

yb3bgrhw3#

使用apk del tzdata有一种更简洁的方法,如下所述:
Setting the timezone - Alpine Linux

相关问题