如何在 Docker 中安装字体?
How to install fonts in Docker?
如何安装所有语言的字体?这就是我所做的,但是 Chrome.
中没有日语字体
来自这张图片:https://github.com/Zenika/alpine-chrome/blob/master/Dockerfile
FROM zenika/alpine-chrome
USER root
RUN apk add --no-cache msttcorefonts-installer fontconfig
RUN update-ms-fonts
# Installs latest Chromium package.
RUN apk add --no-cache \
msttcorefonts-installer fontconfig \
font-noto \
font-noto-adlam \
font-noto-adlamunjoined \
font-noto-arabic \
font-noto-armenian \
font-noto-avestan \
font-noto-bamum \
font-noto-bengali \
font-noto-buhid \
font-noto-carian \
font-noto-chakma \
font-noto-cherokee \
font-noto-cypriot \
font-noto-deseret \
font-noto-devanagari \
font-noto-ethiopic \
font-noto-extra \
font-noto-georgian \
font-noto-glagolitic \
font-noto-gothic \
font-noto-gujarati \
font-noto-gurmukhi \
font-noto-hebrew \
font-noto-kannada \
font-noto-kayahli \
font-noto-khmer \
font-noto-lao \
font-noto-lisu \
font-noto-malayalam \
font-noto-mandaic \
font-noto-myanmar \
font-noto-nko \
font-noto-olchiki \
font-noto-oldturkic \
font-noto-oriya \
font-noto-osage \
font-noto-osmanya \
font-noto-shavian \
font-noto-sinhala \
font-noto-tamil \
font-noto-telugu \
font-noto-thaana \
font-noto-thai \
font-noto-tibetan \
font-noto-tifinagh \
font-noto-vai \
terminus-font \
ttf-opensans \
font-bakoma \
font-misc-misc \
font-croscore
RUN fc-cache -f && rm -rf /var/cache/*
USER chrome
我的解决方案是下载 Google 字体并手动安装。图像大小增加到 1GB。
FROM zenika/alpine-chrome
USER root
RUN apk add --no-cache msttcorefonts-installer fontconfig
RUN update-ms-fonts
# Google fonts
RUN wget https://github.com/google/fonts/archive/master.tar.gz -O gf.tar.gz
RUN tar -xf gf.tar.gz
RUN mkdir -p /usr/share/fonts/truetype/google-fonts
RUN find $PWD/fonts-master/ -name "*.ttf" -exec install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || return 1
RUN rm -f gf.tar.gz
RUN fc-cache -f && rm -rf /var/cache/*
USER chrome
使用 --no-check-certificate
FROM adoptopenjdk/openjdk8:jdk8u252-b09-alpine
MAINTAINER JhonLarru
EXPOSE 7105
COPY src/main/resources/reportes/ /app/
COPY build/libs/*.jar /app/application.jar
RUN apk add --no-cache msttcorefonts-installer fontconfig
RUN update-ms-fonts
# Google fonts
RUN wget https://github.com/google/fonts/archive/master.tar.gz -O gf.tar.gz --no-check-certificate
RUN tar -xf gf.tar.gz
RUN mkdir -p /usr/share/fonts/truetype/google-fonts
RUN find $PWD/fonts-master/ -name "*.ttf" -exec install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || return 1
RUN rm -f gf.tar.gz
RUN fc-cache -f && rm -rf /var/cache/*
ENTRYPOINT ["java", "-Djava.awt.headless=true", "-Duser.timezone=America/Lima", "-Xms128m", "-Xmx128m", "-jar", "/app/application.jar", "server", "--spring.config.location=file:/config/application.yaml"]
已接受的答案中用于下载 google 字体的 URL 已更改。新的 URL 应该是
https://github.com/google/fonts/archive/master.tar.gz
-->
https://github.com/google/fonts/archive/main.tar.gz
新目录应该是,
$PWD/fonts-master/
-->
$PWD/fonts-main/
因此在Docker文件中,它应该是;
RUN wget https://github.com/google/fonts/archive/main.tar.gz -O gf.tar.gz
RUN tar -xf gf.tar.gz
RUN mkdir -p /usr/share/fonts/truetype/google-fonts
RUN find $PWD/fonts-main/ -name "*.ttf" -exec install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || return 1
RUN rm -f gf.tar.gz
RUN fc-cache -f && rm -rf /var/cache/*
我对上面的脚本做了如下修改:
- 在 Docker 中使用较少的
RUN
操作来限制构建步骤。
- 删除提取的字体目录
$PWD/fonts-main
,否则 google 字体会占用两倍的 space。
- 交换
RUN fc-cache -f && rm -rf /var/cache/*
的命令,因为在构建字体缓存后立即清除应用程序缓存对我来说意义不大。
我最后想到的是,
RUN wget https://github.com/google/fonts/archive/main.tar.gz -O gf.tar.gz && \
tar -xf gf.tar.gz && \
mkdir -p /usr/share/fonts/truetype/google-fonts && \
find $PWD/fonts-main/ -name "*.ttf" -exec install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || return 1 && \
rm -f gf.tar.gz && \
# Remove the extracted fonts directory
rm -rf $PWD/fonts-main && \
# Remove the following line if you're installing more applications after this RUN command and you have errors while installing them
rm -rf /var/cache/* && \
fc-cache -f
干杯!!!
只需从本地文件夹复制字体:
RUN cp ./conf/font/* /usr/local/share/fonts/ && dpkg-reconfigure fontconfig-config
如何安装所有语言的字体?这就是我所做的,但是 Chrome.
中没有日语字体来自这张图片:https://github.com/Zenika/alpine-chrome/blob/master/Dockerfile
FROM zenika/alpine-chrome
USER root
RUN apk add --no-cache msttcorefonts-installer fontconfig
RUN update-ms-fonts
# Installs latest Chromium package.
RUN apk add --no-cache \
msttcorefonts-installer fontconfig \
font-noto \
font-noto-adlam \
font-noto-adlamunjoined \
font-noto-arabic \
font-noto-armenian \
font-noto-avestan \
font-noto-bamum \
font-noto-bengali \
font-noto-buhid \
font-noto-carian \
font-noto-chakma \
font-noto-cherokee \
font-noto-cypriot \
font-noto-deseret \
font-noto-devanagari \
font-noto-ethiopic \
font-noto-extra \
font-noto-georgian \
font-noto-glagolitic \
font-noto-gothic \
font-noto-gujarati \
font-noto-gurmukhi \
font-noto-hebrew \
font-noto-kannada \
font-noto-kayahli \
font-noto-khmer \
font-noto-lao \
font-noto-lisu \
font-noto-malayalam \
font-noto-mandaic \
font-noto-myanmar \
font-noto-nko \
font-noto-olchiki \
font-noto-oldturkic \
font-noto-oriya \
font-noto-osage \
font-noto-osmanya \
font-noto-shavian \
font-noto-sinhala \
font-noto-tamil \
font-noto-telugu \
font-noto-thaana \
font-noto-thai \
font-noto-tibetan \
font-noto-tifinagh \
font-noto-vai \
terminus-font \
ttf-opensans \
font-bakoma \
font-misc-misc \
font-croscore
RUN fc-cache -f && rm -rf /var/cache/*
USER chrome
我的解决方案是下载 Google 字体并手动安装。图像大小增加到 1GB。
FROM zenika/alpine-chrome
USER root
RUN apk add --no-cache msttcorefonts-installer fontconfig
RUN update-ms-fonts
# Google fonts
RUN wget https://github.com/google/fonts/archive/master.tar.gz -O gf.tar.gz
RUN tar -xf gf.tar.gz
RUN mkdir -p /usr/share/fonts/truetype/google-fonts
RUN find $PWD/fonts-master/ -name "*.ttf" -exec install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || return 1
RUN rm -f gf.tar.gz
RUN fc-cache -f && rm -rf /var/cache/*
USER chrome
使用 --no-check-certificate
FROM adoptopenjdk/openjdk8:jdk8u252-b09-alpine
MAINTAINER JhonLarru
EXPOSE 7105
COPY src/main/resources/reportes/ /app/
COPY build/libs/*.jar /app/application.jar
RUN apk add --no-cache msttcorefonts-installer fontconfig
RUN update-ms-fonts
# Google fonts
RUN wget https://github.com/google/fonts/archive/master.tar.gz -O gf.tar.gz --no-check-certificate
RUN tar -xf gf.tar.gz
RUN mkdir -p /usr/share/fonts/truetype/google-fonts
RUN find $PWD/fonts-master/ -name "*.ttf" -exec install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || return 1
RUN rm -f gf.tar.gz
RUN fc-cache -f && rm -rf /var/cache/*
ENTRYPOINT ["java", "-Djava.awt.headless=true", "-Duser.timezone=America/Lima", "-Xms128m", "-Xmx128m", "-jar", "/app/application.jar", "server", "--spring.config.location=file:/config/application.yaml"]
已接受的答案中用于下载 google 字体的 URL 已更改。新的 URL 应该是
-->
https://github.com/google/fonts/archive/master.tar.gz
https://github.com/google/fonts/archive/main.tar.gz
新目录应该是,
-->
$PWD/fonts-master/
$PWD/fonts-main/
因此在Docker文件中,它应该是;
RUN wget https://github.com/google/fonts/archive/main.tar.gz -O gf.tar.gz
RUN tar -xf gf.tar.gz
RUN mkdir -p /usr/share/fonts/truetype/google-fonts
RUN find $PWD/fonts-main/ -name "*.ttf" -exec install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || return 1
RUN rm -f gf.tar.gz
RUN fc-cache -f && rm -rf /var/cache/*
我对上面的脚本做了如下修改:
- 在 Docker 中使用较少的
RUN
操作来限制构建步骤。 - 删除提取的字体目录
$PWD/fonts-main
,否则 google 字体会占用两倍的 space。 - 交换
RUN fc-cache -f && rm -rf /var/cache/*
的命令,因为在构建字体缓存后立即清除应用程序缓存对我来说意义不大。
我最后想到的是,
RUN wget https://github.com/google/fonts/archive/main.tar.gz -O gf.tar.gz && \
tar -xf gf.tar.gz && \
mkdir -p /usr/share/fonts/truetype/google-fonts && \
find $PWD/fonts-main/ -name "*.ttf" -exec install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || return 1 && \
rm -f gf.tar.gz && \
# Remove the extracted fonts directory
rm -rf $PWD/fonts-main && \
# Remove the following line if you're installing more applications after this RUN command and you have errors while installing them
rm -rf /var/cache/* && \
fc-cache -f
干杯!!!
只需从本地文件夹复制字体:
RUN cp ./conf/font/* /usr/local/share/fonts/ && dpkg-reconfigure fontconfig-config