alpine 制作docker镜像的问题
Alpine主要有以下问题
1.alpine操作系统下的软件库(国外)经常崩
# 国外的软件库崩掉时会出现“ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.16/main: temporary error (try again later)”
# 我们需要使用国内的软件库镜像
# https://mirrors.ustc.edu.cn/alpine/
# 帮助手册 https://mirrors.ustc.edu.cn/help/alpine.html
2.字体,字符集,时区的问题
alpine过于精简,会出现一下问题:
1 中文乱码
2 系统时间混乱
3 由于不支持字体,导出excel等功能,输出结果是空白
这需要我们自己下载字体包,设置时区,规定字符集编码
3.一个超级坑的问题
执行构建命令:
docker build -t alpinelinuxjre .
即使用的是国内软件库也会出现“ERROR: http://mirrors.ustc.edu.cn/alpine/v3.16/: temporary error (try again later)”
这是因为docker的网络问题,构建时要使用本地网络。
4.另一个超级坑的问题
alpine底层的c函数库是基于musl libc的,不支持glibc(当然你可以自己下载)。
而oracle的jdk依赖的是glibc。所以alpine不能愉快的装oracle的jdk。
所以我下面就选择了装OpenJdk(够用即可)。
最终解决DockerFile如下
FROM docker.io/alpine
WORKDIR /U01
ADD OpenJDK8U-jre_x64_alpine-linux_hotspot_8u345b01.tar.gz /U01
RUN echo -e "https://mirrors.ustc.edu.cn/alpine/v3.16/main/" > /etc/apk/repositories \
&& apk update && apk upgrade && apk add ca-certificates && update-ca-certificates \
&& apk add --update tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
ENV TZ=Asia/Shanghai
ENV LANG=C.UTF-8 \
LANG=zh_CN.UTF-8 \
LANGUAGE=zh_CN.UTF-8
ENV JRE_HOME /U01/jdk8u345-b01-jre
ENV PATH ${PATH}:${JRE_HOME}/bin
docker build -t alpinelinuxjre . --network=host
OpenJDK8U-jre_x64_alpine-linux_hotspot_8u345b01.tar.gz 是我自己下载的。具体的地址:
https://adoptium.net/zh-CN/temurin/releases/
在这里有提供适合AlpineLinux的Openjdk可以自行下载。