我想在 docker 容器中运行 Latex 并将其作为服务提供给其他容器。 然后我想通过 VS 代码容器扩展访问“服务”。应该是这样的,Latex Mircoservice。如果可能的话,我想使用 docker-compose。这种方法的优点是磁盘使用率较低,因为现在我正在为每个乳胶项目构建一个容器,其中包含完整的乳胶安装。每个容器使用大约 ~5GB。
我当前的 Dockerfile 创建了 my-latex 图像,然后应该被各种项目使用。
FROM texlive/texlive:latest
RUN apt-get update && \
apt-get -y install build-essential && \
cpan YAML::Tiny && \
cpan File::HomeDir && \
cpan Unicode::GCString
构建我运行的图像:
docker build -t my-latex .
然后在我的项目目录中创建一个 docker-compose.yml,如下所示:
services:
latex:
image: my-latex
volumes:
- ./latex:/workspace
tty: true
command: ["bash"]
在我的项目目录中运行
docker-compose up
。
但是,如果我想在容器中重新打开,我会得到一个错误,工作区不存在,如下所示。
我在 docker-compose.yml 中尝试了不同的方法,但我无法让它工作。
也许我错过了什么。但据我所知,这个问题应该可以用 docker 解决。
提前致谢
latex
不是长时间运行的命令。它会将 LaTeX 源文件编译为 TeX DVI 格式,然后退出。尝试将其作为长期运行的 Compose 服务运行是没有意义的。
对于此设置,我将使用
docker run
或类似的基于 API 的调用运行一次性容器
docker run \
--rm \
-v "$PWD/latex:/workspace" \
-w /workspace \
my-image \
pdflatex my-document
您提到磁盘空间是一个问题。 Docker 容器通过其镜像之上的 写时复制 文件系统层工作。只要您不尝试覆盖任何 TeX 文件系统内容,每个容器都会与底层图像共享它。虽然像
docker ps
这样的诊断可能会明显显示一个大容器,但使用像 df
这样的工具进行检查不会显示更多的磁盘空间被使用。