- 檔案權限問題
- 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 在 Overleaf 中扮演 S3 與其他服務之間的橋樑。然而在 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 中原本的 _ 會被替換為 /。
