我可以使用CentOS映像设置区域设置
FROM centos ENV LANG en_US.UTF-8 ENV LC_ALL en_US.UTF-8
但它似乎不工作与阿尔卑斯山的形象。我怎么能设置与阿尔卑斯山的形象地区?
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
xa9qqrwz2#
这是我在Alpine Linux中容器化应用程序时设置时间和编码的方式。自Alpine Linux 3.16版起,以下各项经过测试,可以正常工作:在Dockerfile中:安装所需的软件包:
Dockerfile
RUN apk add --no-cache --update musl musl-utils musl-locales tzdata
从/usr/share/zoneinfo/中的选项设置时区:
/usr/share/zoneinfo/
ENV TZ=Europe/London RUN cp /usr/share/zoneinfo/Europe/London /etc/localtime
在/usr/share/i18n/locales/musl中,Musl将安装以下编码:
/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:
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的末尾,其余操作就可以完成了。在生成之后,现在执行以下操作时:
LANG=
sed
export LC_ALL=
/etc/profile.d/locale.sh
locale
您将看到默认编码已更改从C.UTF-8到en_GB.UTF-8:
C.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
您会注意到时间现在已更改从UTC到BST:
UTC
BST
Mon Jul 18 16:59:51 BST 2022
最后,关于Alpine的Musl环境实现HERE的一些值得一阅读的注解
yb3bgrhw3#
使用apk del tzdata有一种更简洁的方法,如下所述:Setting the timezone - Alpine Linux
apk del tzdata
3条答案
按热度按时间pod7payv1#
这对我很有效,Dockerfile:
xa9qqrwz2#
这是我在Alpine Linux中容器化应用程序时设置时间和编码的方式。
自Alpine Linux 3.16版起,以下各项经过测试,可以正常工作:
在
Dockerfile
中:安装所需的软件包:
从
/usr/share/zoneinfo/
中的选项设置时区:在
/usr/share/i18n/locales/musl
中,Musl
将安装以下编码:如果您不想在Docker文件的以下行中使用GB英语,请从上面的列表中选择您的首选编码,并将其替换为
en_GB.UTF-8
:虽然您必须对
LANG=
参数执行sed
操作,但通过将export LC_ALL=
追加到/etc/profile.d/locale.sh
的末尾,其余操作就可以完成了。在生成之后,现在执行以下操作时:
您将看到默认编码已更改从
C.UTF-8
到en_GB.UTF-8
:当您执行以下操作时:
您会注意到时间现在已更改从
UTC
到BST
:最后,关于Alpine的
Musl
环境实现HERE的一些值得一阅读的注解yb3bgrhw3#
使用
apk del tzdata
有一种更简洁的方法,如下所述:Setting the timezone - Alpine Linux