
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这是为TeXlive打造的Docker镜像,旨在提供可用且具有普遍适用性的解决方案。其核心概念是提供小型基础镜像,可根据需要从CTAN(综合TeX存档网络)安装额外的软件包。
这些镜像旨在覆盖以下使用场景:
我们目前基于TeXlive安装程序建议的不同软件包集合发布以下镜像(从小到大):
我们还提供概念验证(PoC)以展示可基于此处提供的基础镜像构建更复杂的应用:
构建当前目录文档的最快方式(一次性)如下:
bashdocker run --rm \ --volume `pwd`:/work/src:ro \ --volume `pwd`/out:/work/out \ docker.xuanyuan.run/reitzig/texlive-base-luatex \ work lualatex hello_world.tex
注意:
texlive-base-luatex镜像之外所需的所有TeXlive软件包均列在Texlivefile中。如果您不介意下载更大的镜像,也可使用reitzig/texlive-full镜像。out目录中的文件。请选择当前未使用的文件夹名称。有关其他使用方式,请参见https://github.com/reitzig/texlive-docker/blob/master/examples目录中的脚本。
在源目录中放置一个名为Texlivefile的文件,其中列出所需的CTAN软件包,每行一个名称。容器将在运行工作命令前安装该列表中的所有软件包。
⚠️ 当TeXlive发布新版本后,这种安装依赖项的方式将停止工作,并显示类似以下错误:
tlmgr: Local TeX Live (2023) is older than remote repository (2024).
如果您需要暂时继续使用旧镜像,可通过设置环境变量TEXLIVE_REPOSITORY覆盖仓库地址,例如:
https://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2023/tlnet-final
此功能从2024.2版本开始可用;有关如何向后移植到旧镜像的提示,请参见https://github.com/reitzig/texlive-docker/issues/18#issuecomment-2022953222%E3%80%82
⚠️ 请注意,大多数CTAN镜像不维护历史版本(参见https://tex.stackexchange.com/questions/460132/historic-tex-live-distributions-https-sftp-mirror%EF%BC%89%EF%BC%8C%E5%9B%A0%E6%AD%A4%E8%AF%B7%E8%AE%B0%E4%BD%8F%EF%BC%8C%E5%B9%BF%E6%B3%9B%E4%BD%BF%E7%94%A8%E6%AD%A4%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95%E4%BC%9A%E7%BB%99%E5%B0%91%E6%95%B0%E6%8F%90%E4%BE%9B%E5%8E%86%E5%8F%B2%E7%89%88%E6%9C%AC%E7%9A%84%E9%95%9C%E5%83%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B8%A6%E6%9D%A5%E5%8E%8B%E5%8A%9B%E3%80%82%E6%88%91%E4%BB%AC%E5%BC%BA%E7%83%88%E5%BB%BA%E8%AE%AE%E5%B0%BD%E5%BF%AB%E5%8D%87%E7%BA%A7%E5%88%B0%E6%9C%80%E6%96%B0%E7%9A%84TeXlive%E7%89%88%E6%9C%AC%EF%BC%81
ℹ️ 话虽如此,另一种方法是维护包含历史软件包版本的自定义Docker镜像。这种方法完全避免了在运行时执行tlmgr,因此仓库冻结不会影响您的构建。
您可以通过https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file调整https://github.com/reitzig/texlive-docker/blob/master/entrypoint.sh的某些默认值:
BUILDSCRIPT(默认值:build.sh)TEXLIVEFILE(默认值:Texlivefile)OUTPUT(默认值:*.pdf *.log)工作命令的所有输出都收集在一个文件夹中,可通过以下命令提取:
bashdocker cp $container:/work/tmp ./
运行以下命令在本地构建镜像:
bashdocker build -t texlive-base-luatex --build-arg "profile=base-luatex" .
将base-luatex替换为https://github.com/reitzig/texlive-docker/blob/master/profiles目录中的任何配置文件名称,即可从其他基线开始构建。
如果您反复需要完全相同的依赖项集甚至源文件,创建自己的TeXlive Docker镜像可能是合理的。有两种方法可以实现:
使用您自己的Dockerfile扩展现有镜像(参见https://github.com/reitzig/texlive-docker/blob/master/examples/Dockerfile);安装额外的TeXlive(甚至Alpine)软件包、将源文件或额外脚本复制到适当的文件夹、修复工作命令等。
使用https://www.tug.org/texlive/acquire-netinstall.html创建自己的TeXlive安装配置文件。确保:
x86_64-linuxmusl,并且binary_x86_64-linux 1更改为binary_x86_64-linux 0。
如果您希望跨不同TeXlive版本使用配置文件,请将所有TeXlive版本(例如2019)的出现替换为${tlversion}。
将最终文件复制到https://github.com/reitzig/texlive-docker/blob/master/profiles目录,然后运行常规构建命令。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务