- 文件权限问题
- history-v1 与 filestore 之间的卷共享
- 子目录问题
启用沙盒编译
这里我们只需像在 Overleaf CE 中那样启用沙盒编译即可。不过需要注意用户设置,这里我们将其设为 root。 在生产环境中,我们使用 www-data 作为 Overleaf 容器与 TeX 编译容器之间的共享用户。然而在开发环境中,容器内的默认用户是 node,并且没有 www-data 用户可以对接。因此我们使用 root 作为变通方案。修复文件权限
LaTeX 在同级容器中以TEXLIVE_IMAGE_USER 环境变量指定的用户身份运行。在上面的示例中,它被设置为 root,其 uid 为 0。这与上述权限设置产生了冲突,因为 root 用户没有写入 compiles 子文件夹的权限。
一个快速的修复方法是将 compiles 的属组设为 root 组并授予读写权限,同时设置 setgid,使新建的子文件夹也继承该属组:
bash
services/clsi/README.md。
history-v1 与 filestore 之间的卷共享
默认情况下,filestore 充当 S3 与 Overleaf 中其他服务之间的桥梁。然而在 Overleaf CE 或 Server Pro 中,所有文件默认都存储在本地。因此,Overleaf 引入了一种非常取巧的方法。server-ce/config/settings.js
data/history 也被 history 服务使用。通过这种方式,不同的微服务之间可以共享相同的数据。你需要在开发环境中将 history-v1-buckets 卷添加到 filestore 服务中。否则,clsi 将无法从 filestore 服务拉取 blob 文件。
develop/docker-compose.yml
dev.env 设置中添加 BUCKET 名称:
develop/dev.env
使用子目录
filestore 默认将 useSubdirectories 设为 true,然而在开发环境中,history v1 会将所有数据扁平化存储。这会导致一些冲突。要解决此问题,你需要添加以下内容:develop/dev.env
project_blobs 文件原本是这样存储的:
true,使其切换为子目录模式。此时,blob 中原有的 _ 将被替换为 /。
