基于 alpine 制作docker镜像的问题

本文探讨了使用Alpine Linux构建Docker镜像过程中遇到的问题,包括软件库不稳定、字符集与时区配置、依赖冲突等,并分享了解决方案及最终的Dockerfile示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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可以自行下载。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值