docker 安装 字体文件

先说一下我当前的 场景 及 环境,这样同学们可以先评估本篇文章是否有帮助。

环境:

  • 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"就可以了

进入容器:

bash 复制代码
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"

就能看到 拷贝的文件,然后做一个迁移:

首先我们存储的文件路径为:

bash 复制代码
/usr/share/fonts

我当前容器中,是没有 "fonts" 目录的

所以需要创建,先进入到

bash 复制代码
cd /usr/share

然后创建目录:

bash 复制代码
mkdir fonts

再进入:

bash 复制代码
cd fonts

再查看:

bash 复制代码
pwd

若输出:

bash 复制代码
/usr/share/fonts

则代表目录正确!

然后我们将 字体文件 拷贝过来。就可以在当前目录这样:

bash 复制代码
cp /tmp/msyh.ttc msyh.ttc

然后查看列表:

bash 复制代码
ls

如果显示了

bash 复制代码
msyh.ttc

则代表该文件已经拷贝到该目录下!

到此 结束!

相关推荐
草莓熊Lotso6 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
RisunJan6 小时前
Linux命令-lprm(删除打印队列中任务)
linux·运维·服务器
Web极客码7 小时前
WordPress从经典编辑器升级到古腾堡编辑器
运维·编辑器·wordpress
zzzsde7 小时前
【Linux】进程(5):命令行参数和环境变量
linux·运维·服务器
江湖有缘7 小时前
Docker部署music-tag-web音乐标签编辑器
前端·docker·编辑器
迎仔7 小时前
E-自动化:GPU驱动维护自动化
运维·gpu·gpu驱动
计算机小手7 小时前
Docker 部署 OpenClaw 汉化版,畅玩个人 AI 智能代理
经验分享·docker·aigc·开源软件
草莓熊Lotso8 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
历程里程碑8 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
七夜zippoe16 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann