Gea*_*any 6 locale centos docker alpine-linux
我可以使用CentOS映像设置语言环境
FROM centos
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
但这似乎不适用于Alpine图片。如何设置Alpine图片的语言环境?
这就是我在 Alpine Linux 中容器化应用程序时设置时间和编码的方式。
以下内容经过测试,自 Alpine Linux 版本 3.16 起可以正常工作:
在里面Dockerfile
:
安装所需的包:
RUN apk add --no-cache --update musl musl-utils musl-locales tzdata
Run Code Online (Sandbox Code Playgroud)
从以下选项中设置时区 /usr/share/zoneinfo/
:
ENV TZ=Europe/London
RUN cp /usr/share/zoneinfo/Europe/London /etc/localtime
Run Code Online (Sandbox Code Playgroud)
在 中/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
Run Code Online (Sandbox Code Playgroud)
en_GB.UTF-8
从上面的列表中选择您喜欢的编码,如果您不想在 Dockerfile 的以下行中使用 GB 英语,请将其替换为:
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
Run Code Online (Sandbox Code Playgroud)
尽管您必须使用sed
参数LANG=
,但通过附加export LC_ALL=
到末尾,/etc/profile.d/locale.sh
其余部分已为您完成。
构建之后,当您现在执行:
locale
Run Code Online (Sandbox Code Playgroud)
您会看到默认编码已更改为 :C.UTF-8
en_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#
Run Code Online (Sandbox Code Playgroud)
当你执行时:
date
Run Code Online (Sandbox Code Playgroud)
您会注意到时间现在已更改为 :UTC
BST
Mon Jul 18 16:59:51 BST 2022
Run Code Online (Sandbox Code Playgroud)
最后,关于 AlpineMusl
语言环境实现的一些值得一读的注释在这里
它对我有用,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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5396 次 |
最近记录: |