يُمكن تشغيل نسختين من التطبيق نفسه على مستوى Docker Compose، لكن تغيير اسم الحاوية الرئيسية ومنفذ الويب فقط لا يكفي لمجموعة متعددة الخدمات مثل Immich.
استخدم مشروع Compose منفصلًا لكل نسخة
توضح أسماء مشاريع Docker Compose أن أسماء مشاريع Compose مصممة لعزل بيئات متعددة قد تتشارك أسماء الخدمات لولا ذلك. امنح كل نسخة اسم مشروع فريدًا بدلًا من الاعتماد على إعادة تسمية الحاويات يدويًا كآلية العزل الأساسية.
يشرح أول تطبيق Docker طبقة Compose في ZimaOS، بينما يمكن أن يساعدك Portainer على ZimaOS في فحص المجموعات المستقلة إذا كنت من المستخدمين المتقدمين.
Immich مجموعة خدمات، وليس حاوية واحدة
يستخدم Docker Compose الخاص بـ Immich عدة خدمات، ويفصل بين تخزين الملفات المرفوعة وتخزين قاعدة البيانات. لذلك تحتاج نسخة Immich ثانية إلى بيانات قاعدة بيانات خاصة بها، ومسار رفع خاص بها، وبيانات ذاكرة التخزين المؤقت/النماذج عند الاقتضاء، وأي منافذ مضيفة قد تتعارض مع النسخة الأولى.
ما الذي يجب أن يكون فريدًا؟
- اسم مشروع Compose: يعزل مساحات أسماء الخدمات والشبكات ووحدات التخزين.
- المنافذ المنشورة على المضيف: لا يمكن لنسختين ربط المنفذ نفسه على المضيف.
- المجلدات/وحدات التخزين الدائمة: لا توجّه قواعد بيانات مستقلة أو مكتبات رفع إلى دليل بيانات واحد قابل للكتابة.
- مراجع البيئة: حافظ على الاتساق الداخلي لكل مجموعة.
يفيدك ترحيل تخزين Immich في فهم مسارات Immich الدائمة وسبب عدم مشاركتها عشوائيًا بين عمليات التثبيت.
تجنب container_name الثابت ما لم تكن بحاجة إليه
يمكن لـ Compose عادةً إنشاء الأسماء من أسماء المشروع والخدمة. ويزيد تثبيت container_name من احتمال تعارض الأسماء العامة، كما يجعل تكرار المجموعات أكثر عرضة للمشكلات.
الخلاصة
النموذج الصحيح هو «مشروعا Compose معزولان»، وليس «التطبيق نفسه مع حاويتين معاد تسميتهما». بالنسبة إلى Immich، اعزل الحالة الدائمة لكل خدمة وأي منافذ منشورة. فقد تؤدي مشاركة الحالة إلى فشل المجموعة الثانية أو تداخلها مع الأولى.
