先说一下我当前的 场景 及 环境,这样同学们可以先评估本篇文章是否有帮助。
环境:
- docker
- php8.1-fpm
- windows
之所以有 php,是因为这个功能是使用 php 开发的,其他语言的同学,如果也有使用到 字体文件,那么本篇应该也是有参考性的。
因为本篇主要是分享 docker 安装 字体文件
场景:
来了个需求,有一个默认背景图,可以理解为背景图是一个 "相框",相框里面就会放 照片。照片 是用户端进行上传的。 需要开发一个功能:用户上传照片,程序进行合并,将 相框 和 照片 合并在一起,并且在 相框的 下方附上一段文字,例如是姓名,编号等。
因为这个功能,我以前是开发过的,当时并没有使用到 docker,所以我看了一下源码,发现以前使用时,有用到 "字体文件",我看了一下路径是:
/usr/share/fonts/msyh.ttc
然后我进入 docker 容器,查看是否存在这个文件,发现 并没有!
所以,我需要下载字体文件。
因为是 PHP,使用的 GD 库进行操作,编写文字时,需要使用到 字体文件。
我的本地开发环境,使用的是 windows11,大多数同学应该也是用的是 windows 10 或者 11 甚至有的同学应该还有使用 7。
如果是其他系统,比如 MAC、LINUX 等,可能就不一样,但是解题思路应该还是可以参考的!
在本地 我们打开终端,输入:
cd /c/Windows/Fonts/
进入这个目录后,我们查看列表:
ls
是真的很多哇。
然后我使用的是 "msyh.ttc"
该文件的类型是:TrueType Collection 字体文件 (.ttc)
该字体是:微软雅黑 常规 简体字
然后我们将该文件拷贝到容器里:
docker cp msyh.ttc 容器名:/tmp
上面这条命令,将"容器名"替换成 我们的容器"CONTAINER ID" 或者 容器"NAMES"就可以了
进入容器:
winpty docker exec -it 容器名 bash
因为我的是 windows 环境,所以增加了 "winpty" 命令,如果是 linux 的话,则不需要,如果我不加 winpty 则会报错:
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
然后我们找到拷贝的目录 "/tmp"
就能看到 拷贝的文件,然后做一个迁移:
首先我们存储的文件路径为:
/usr/share/fonts
我当前容器中,是没有 "fonts" 目录的
所以需要创建,先进入到
cd /usr/share
然后创建目录:
mkdir fonts
再进入:
cd fonts
再查看:
pwd
若输出:
/usr/share/fonts
则代表目录正确!
然后我们将 字体文件 拷贝过来。就可以在当前目录这样:
cp /tmp/msyh.ttc msyh.ttc
然后查看列表:
ls
如果显示了
msyh.ttc
则代表该文件已经拷贝到该目录下!
到此 结束!