alpine 镜像 java 日志中文问号乱码
0x00 前言
吾使用 alpine 作为基础镜像构建了 jdk8 镜像,为线上业务的 Java 微服务架构提供支持,但是有容器运行的 java 服务中打印的日志中一旦出现中文,就会出现诸如以下的 ???? 的乱码:
以下是解决该问题的方法,转载自 github 中这个 issues 中的解决方法。
0x01 解决
1、使用 alpine 构建镜像时,在 dockerfile 修改其语言环境:
FROM alpine:3.6
#---not shown here---
#Install language pack
RUN apk --no-cache add ca-certificates wget && \
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.25-r0/glibc-2.25-r0.apk && \
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.25-r0/glibc-bin-2.25-r0.apk && \
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.25-r0/glibc-i18n-2.25-r0.apk && \
apk add glibc-bin-2.25-r0.apk glibc-i18n-2.25-r0.apk glibc-2.25-r0.apk
#Iterate through all locale and install it
#Note that locale -a is not available in alpine linux, use `/usr/glibc-compat/bin/loca