- ファイル権限の問題
- history-v1 と filestore 間のボリューム共有
- サブディレクトリの問題
Sandbox Compiles を有効にする
ここでは、Overleaf CE と同じように Sandbox Compiles を有効にするだけです。ただし、ユーザーには注意が必要です。ここでは root に設定します。 本番環境では、Overleaf コンテナと TeX コンパイル用コンテナの共有ユーザーとして www-data を使用しています。しかし開発環境では、コンテナのデフォルトユーザーは node であり、これに対応する www-data ユーザーが存在しません。そのため、回避策として root を使用します。ファイル権限を修正する
LaTeX は、TEXLIVE_IMAGE_USER 環境変数で指定されたユーザーとして兄弟コンテナ内で実行されます。上の例では uid 0 を持つ root に設定されています。この場合、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 内の元の _ は / に置き換えられます。
