Docker制作含字体库的OpenJdk镜像

简介: 最近项目上测试环境,测试测一个导出模板的功能时,发现模板导出出来,于是我在本地试了一下,结果正常导出,同一份代码部署到测试怎么就不一样了呢,无奈只能查看服务器日志

最近项目上测试环境,测试测一个导出模板的功能时,发现模板导出出来,于是我在本地试了一下,结果正常导出,同一份代码部署到测试怎么就不一样了呢,无奈只能查看服务器日志,发下如下错误:

java.lang.IllegalArgumentException: The workbook already contains a sheet named

结果百度了一下午,没有解决方案,偶然看到一个资源下载,说是Docker缺少字体库原因,我突然想到之前处理过一个问题,也是Docker部署项目,然后图形验证码不显示问题。
在这里插入图片描述
之前的解决方案是吧 Dockerfile中的From及基础镜像从 openjdk修改为Oracle Jdk。因为openjdk是不包含字体库的。

FROM java:8
MAINTAINER cp
ENV TZ Asia/Shanghai
EXPOSE 8080
COPY . /
WORKDIR /
RUN chmod +x /bin/*.sh
CMD [ "./bin/startDocker.sh" ]

现在提供下第二种方案:制作一个含字体库的openjdk镜像

调整Dockerfile文件如下:

FROM openjdk:8-jdk-alpine
MAINTAINER cp cp@163.com
ENV TZ Asia/Shanghai
EXPOSE 8080
COPY . /
#拷贝字体文件
COPY ./config/font/SimHei.ttf /usr/share/fonts/SimHei.ttf 
WORKDIR /
RUN chmod +x /bin/*.sh \
    && echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories \
    && echo "http://mirrors.aliyun.com/alpine/v3.6/community" >> /etc/apk/repositories \
    && apk update upgrade \
    && apk add --no-cache procps unzip curl bash tzdata \
    && apk add ttf-dejavu \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone
CMD [ "./bin/startDocker.sh" ]

描述:通过alpine构建其他的镜像报错,报临时文件不可用,但是,通过浏览器是直接可以下载到tar包的。

fetch http://mirrors.aliyun.com/alpine/edge/testing/x86_64/APKINDEX.tar.gz
ERROR: http://mirrors.aliyun.com/alpine/v3.11/community: temporary error (try again later)
WARNING: Ignoring APKINDEX.2dee45f2.tar.gz: No such file or directory
ERROR: http://mirrors.aliyun.com/alpine/edge/testing: temporary error (try again later)
WARNING: Ignoring APKINDEX.f46ee61c.tar.gz: No such file or directory

解决:通过本地的网络进行构建,问题得到解决。

打包镜像:

docker build -t my-openjdk8 . --network=host
目录
相关文章
|
2月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
345 100
|
2月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
276 99
|
2月前
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
287 98
|
2月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
336 5
|
2月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
173 8
|
3月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
281 16
|
3月前
|
运维 关系型数据库 数据库
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
随着云原生发展,部署工具从 Bitnami 转向 Websoft9。后者基于官方镜像,提供多应用编排与统一运维,提升部署效率与维护能力,适合多系统协同场景。
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
|
3月前
|
Ubuntu 网络安全 PHP
如何使用vscode的Docker插件管理ubuntu 拉取服务器的镜像以及创建容器
本测试镜像旨在记录使用vscode的Docker插件拉取病创建Dockerfile,以及拉取镜像。
|
4月前
|
存储 缓存 Serverless
【Azure Container App】如何在Consumption类型的容器应用环境中缓存Docker镜像
在 Azure 容器应用的 Consumption 模式下,容器每次启动均需重新拉取镜像,导致冷启动延迟。本文分析该机制,并提出优化方案:使用 ACR 区域复制加速镜像拉取、优化镜像体积、设置最小副本数减少冷启动频率,或切换至 Dedicated 模式实现镜像缓存,以提升容器启动效率和应用响应速度。
129 0