- مشكلة أذونات الملفات
- مشاركة وحدة التخزين (Volume) بين history-v1 و filestore
- مشكلة المجلدات الفرعية
تفعيل Sandbox Compiles
هنا، نحتاج فقط إلى تفعيل Sandbox Compiles كما نفعل في overleaf ce. لكن علينا الانتباه إلى المستخدم فقط، وهنا نضبطه على root. في بيئة الإنتاج، نستخدم www-data كمستخدم مشترك بين حاوية overleaf وحاوية ترجمة tex. أما في بيئة التطوير، فإن node هو المستخدم الافتراضي في الحاوية، ولا يوجد مستخدم www-data للربط به. لذلك نستخدم root كحل بديل.إصلاح أذونات الملفات
يعمل LaTeX في الحاويات الشقيقة بصلاحيات المستخدم المحدد في متغير البيئةTEXLIVE_IMAGE_USER. وفي المثال أعلاه، تم ضبطه على root الذي يملك uid 0. ويسبب ذلك مشكلة مع الأذونات المذكورة أعلاه، إذ لا يملك المستخدم root إذن الكتابة في المجلدات الفرعية لـ compiles.
يتمثل الحل السريع في منح المجموعة root ملكية compiles وأذونات القراءة والكتابة عليه، مع ضبط setgid بحيث ترث المجلدات الفرعية الجديدة هذه الملكية أيضًا:
bash
services/clsi/README.md.
مشاركة وحدة التخزين (Volume) بين history-v1 و filestore
افتراضيًا، تعمل filestore كجسر بين s3 والخدمات الأخرى في overleaf. لكن في overleaf ce أو server pro، تُخزَّن جميع الملفات محليًا بشكل افتراضي. ولذلك اعتمدت overleaf طريقة ملتوية جدًا.server-ce/config/settings.js
data/history. وبهذه الطريقة، يمكن للخدمات المصغّرة المختلفة مشاركة البيانات نفسها. عليك إضافة وحدة التخزين history-v1-buckets إلى خدمة filestore في بيئة التطوير. وإلا، فلن تتمكن clsi من سحب ملفات blob من خدمة filestore.
develop/docker-compose.yml
dev.env:
develop/dev.env
استخدام المجلدات الفرعية
تستخدم filestore الخيار useSubdirectories بقيمة true افتراضيًا، لكن في بيئة التطوير، ستقوم history v1 بتسطيح جميع البيانات. ويسبب ذلك بعض التعارض. ولإصلاح ذلك، عليك إضافة ما يلي:develop/dev.env
project_blobs في الأصل بهذا الشكل:
true لتغييرها إلى وضع المجلدات الفرعية. وعندها سيُستبدل الحرف _ الأصلي في blob بالحرف /.
