请教个 alpin docker 镜像字体问题

176 天前
 KINGWAY

我跑了个 invoice 系统基于 alpin docker 构建, dockerfile 中开发者说用的免费字体, 但我想预览中文, 请问如何可以做到在 container 中增加??

参考 https://github.com/invoiceninja/invoiceninja/discussions/9545#discussioncomment-9552029

1154 次点击
所在节点    程序员
12 条回复
zed1018
176 天前
自己写 Dockerfile From 这个镜像用命令装然后 build 镜像再跑
KINGWAY
176 天前
@zed1018 #1 build 太麻烦了,想直接进去 container 直接 apk add 来安装, 就是不知道当前中文字符字体哪里可以下载
zed1018
176 天前
能直接包安装的字体少,加上 alpine 基本不会有人拿来做 DE ,你得自己找字体然后根据他们的文档安装
KINGWAY
176 天前
@zed1018 #3 是啊,一般大家都用 debian/ubuntu 来做 de, 这个 invoice 系统用 alpine, 可能也是出于担心使用者随便进 containe 操作导致各种问题而选择的吧.

想请教下 alpine 的 container 可以进去用 apk add 来安装字体吗? 因为折腾了一下午,还没找到 alpine 开通 ssh, 然后导入 windows 下 fonts 来解决.

另外 alpine 容器进去远程下载速度非常慢, 找了一轮国内源, 也不太好用.
wheat0r
176 天前
@KINGWAY #4 你直接 docker exec -it container-name ash 进去试试呗
zim298247
176 天前
KINGWAY
176 天前
@zim298247 #6 这个已经安装过了, 但是仍然显示中文乱码
jalena
175 天前
@KINGWAY 明确的告诉你,能!!!!
jalena
175 天前
```Dockerfile
FROM adoptopenjdk/openjdk8-openj9:alpine-slim

LABEL maintainer="Jalena jalena@bcsytv.com"

RUN mv /usr/glibc-compat/lib/ld-linux-x86-64.so.2 /usr/glibc-compat/lib/ld-linux-x86-64.so && \
ln -s /usr/glibc-compat/lib/ld-linux-x86-64.so /usr/glibc-compat/lib/ld-linux-x86-64.so.2

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
apk --no-cache --update add tzdata fontconfig ttf-dejavu && \
fc-cache --force && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone

COPY ./font /usr/share/fonts/win/
```

参考这个,Windows 的字体在 build 时 copy 进去就行了
tramm
175 天前
我都是自己打个带字体的镜像作为基础镜像使用
```
# Docker image for springboot file run
# VERSION 0.0.1
# 基础镜像使用 zulu-jre
FROM azul/zulu-openjdk-alpine:17-jre

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
```
KINGWAY
175 天前
@jalena #9 谢谢, 已经搞定了, 和我 Append 的基本一致, 不同的是进容器后 sed -i 替换没用, 只能 vi 来编辑手动添加国内源.

这最后一段这个是设置 locale 为国内嘛?

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone

COPY ./font /usr/share/fonts/win/ <---这段是直接复制 windows 下的字体到宿主机的影身目录嘛?
jalena
172 天前
@KINGWAY 是的!!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1043858

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX