如何在Amazon Linux Docker镜像中安装微软字体?
解决方案
方案1:在Amazon Linux镜像中编译cabextract并手动安装微软核心字体
通过源码编译cabextract解决系统依赖问题,再从微软官方源合法下载并安装字体:
- 安装编译依赖
RUN yum install -y gcc make wget
- 编译安装cabextract(适配当前系统glibc版本)
RUN wget https://www.cabextract.org.uk/cabextract-1.9.1.tar.gz \ && tar -xzf cabextract-1.9.1.tar.gz \ && cd cabextract-1.9.1 \ && ./configure --prefix=/usr \ && make \ && make install \ && cd .. && rm -rf cabextract-1.9.1*
- 下载并安装微软核心字体
RUN mkdir -p /tmp/fonts && cd /tmp/fonts \ && FONTS=( \ "https://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/arial32.exe" \ "https://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/arialb32.exe" \ "https://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/comic32.exe" \ "https://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/courie32.exe" \ "https://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/georgi32.exe" \ "https://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/impact32.exe" \ "https://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/times32.exe" \ "https://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/trebuc32.exe" \ "https://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/verdana32.exe" \ "https://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/webdin32.exe" \ ) \ && for font in "${FONTS[@]}"; do \ wget -q "$font"; \ cabextract -L -F '*.ttf' "$(basename "$font")"; \ rm "$(basename "$font")"; \ done \ && mkdir -p /usr/share/fonts/winfonts \ && cp *.ttf /usr/share/fonts/winfonts/ \ && fc-cache -fv \ && cd / && rm -rf /tmp/fonts
注:上述下载链接均来自微软官方授权源,安装过程符合微软字体EULA要求。
方案2:切换到Debian/Ubuntu系的Corretto+Tomcat镜像
改用Debian基础的Corretto镜像,直接用apt安装预编译的Tomcat、tomcat-native库和微软字体,彻底规避Amazon Linux的依赖问题:
示例Dockerfile片段:
FROM amazoncorretto:17-debian RUN apt-get update \ && echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections \ && apt-get install -y --no-install-recommends \ tomcat9 \ libtcnative-1 \ ttf-mscorefonts-installer \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*
这里libtcnative-1是预编译的Tomcat原生库,无需手动编译,完美匹配你的需求。
方案3:使用开源替代字体(快速无依赖)
如果对字体一致性要求不苛刻,可采用Liberation字体——它是微软核心字体的开源兼容替代,外观几乎一致,直接通过yum安装即可:
RUN yum install -y liberation-fonts
安装后系统会自动将Liberation字体映射为Arial、Times New Roman等微软字体的替代,无需额外配置。
内容的提问来源于stack exchange,提问作者D.Ogranos
相关产品推荐
相关产品推荐

