基于 alpine 制作docker镜像时
大家经常爱用alpine镜像
FROM openjdk:8-jdk-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、不能愉快的装oracle的jdk
alpine底层的c函数库是基于musl libc的,不支持glibc(当然你可以自己下载)。
而oracle的jdk依赖的是glibc。所以alpine不能愉快的装oracle的jdk。
所以我下面就选择了装OpenJdk(够用即可)。
最终解决的Dockerfile文件内容如下:
FROM openjdk:8-jdk-alpine
WORKDIR /mydir_U01
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
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 /mydir_U01/jdk8u345-b01-jre #【你自己的路径】
ENV PATH ${PATH}:${JRE_HOME}/bin
同时:给docker配置DNS解析服务器
配置文件的路径: /etc/docker/daemon.json,没有此配置文件的话就新建一个
{
"registry-mirrors": [
"https://***.mirror.aliyuncs.com",
"https://reg-mirror.qiniu.com",
"https://docker.mirrors.ustc.edu.cn/"
],
"dns": [
"8.8.8.8",
"114.114.114.114"
],
"insecure-registries": []
}
标签:https,mirrors,--,apk,&&,docker,alpine From: https://www.cnblogs.com/schyzhkj/p/18006642