لقد عملت في شركات مختلفة تستخدم خدمات microservices. وركضوهم في حاويات السفن. أنا الآن أعمل مع مشروع ، رغم أنه متراصة ، إلا أنه لا يزال أكثر ملاءمة لتشغيله في حاوية.
من ناحية ، تعد Docker أداة متعددة الاستخدامات للغاية ، ويمكن استخدامها بسهولة وفعالية لحل عدد كبير من المهام. إنه أمر مفهوم ويبدو أن كل شيء أساسي. لكن من ناحية أخرى ، إذا كنت لا تقضي وقتك ومواردك في "الضخ" في استخدامها الصحيح ، فمن المحتمل أن تتسبب في تعقيد الأمور البسيطة. وبالطبع سوف تفترض أنك على صواب ، وأن Docker عبارة عن قمامة ضخمة متوسطة الحجم ليست مناسبة لحل مهمتك الفريدة.
عادة ، في شركة قياسية ، تبدو عملية العمل في أي مهمة كما يلي:
- يتم دفع جيت مع التزامنا
- يتم تشغيل النظام ، سواء كان جنكينز ، TeamCity ، إلخ.
- يتم تشغيل Pipeline / job ، حيث يتم تنزيل مكتبات الطرف الثالث ، ويتم تجميع المشروع ، ويتم تشغيل الاختبارات
- يتم إنشاء صورة عامل ميناء مع المشروع تجميعها (ADD ..) ودفعت في التسجيل عامل ميناء البعيد
- بطريقة أو بأخرى ، على الخادم البعيد ، يتم سحب عامل ميناء (الشيف ، دمية ، يدويا عن طريق عامل الميناء) ويبدأ الحاوية.
بشكل حدسي ، شعرت دائمًا أن الأمر كان معقدًا إلى حد ما. هذه العملية تسمى بفخر CI / CD ، وأنا تعبت من هؤلاء الأشخاص الأذكياء الذين ليس لديهم شك في أن هذه هي أسهل طريقة.
بالنسبة للمستخدم النهائي ، يبدو الأمر كالتالي: من خلال الدفع إلى مستودع git ، يتكشف ما حدث في الالتزام في مكان ما.
ما لا يعجبني في هذا النهج.
- الطريقة الوحيدة لنشر النظام على خادم بعيد هي متابعة الخطوات الخمس.
- في الخطوة 3 ، قد تحتاج إلى مفاتيح الوصول إلى المكتبات الخاصة. يمكن أن تكون العملية طويلة إذا لم يتم تكوين التخزين المؤقت للمكتبات التي تم تنزيلها مسبقًا.
- تحتاج إلى إعداد Dockerfile ، وتحديد الصورة (من ...) ، وتحديد كيفية وضع علامة على الصورة وتحتاج إلى الوصول إلى المستودع الذي سنقوم بدفع الصورة إليه.
- تحتاج مستودعك الخاص ، قم بتكوين https. بعد كل شيء ، عميل عامل ميناء يعمل فقط على https.
الفقرة الرابعة ، بالطبع ، تتم مرة واحدة وربما لا ينبغي إضافتها.
ولكن كم مرة تم ذكر كلمة Docker بالفعل في مرحلة الإصدار؟
فكر في الأمر: لماذا نسحب كل عامل الميناء هذا في وقت مبكر؟ لأنه يُعتقد أن الحاوية مريحة و "حسنًا ، كل شيء على ما يرام ، إنه يعمل. ماذا بدأت بعد ذلك؟ ".
لذلك ، بالنسبة لهؤلاء الأشخاص ، يمكنني القول - حاويات الإرساء ليست حلاً سحريًا وليست البيئة الوحيدة التي يمكن أن يعمل بها التطبيق الخاص بك. مشروع مكتوب بيثون ، php ، js ، سويفت ، سكالا / جافا ، إلخ. يمكن تشغيله على:
- الجهاز الظاهري عن بعد
- على مضيف محلي دون أي حاويات المحاكاة الافتراضية ورصيف الميناء.
فجأة :)
دعونا نتخيل أننا نقوم بعمل خدمة ستعمل على nodeJS.
ستكون نتيجة هذا المشروع (أو كما أسميها "قطعة أثرية") عبارة عن مجموعة من ملفات js (الخدمة نفسها) + node_modules (مكتبات الجهات الخارجية المستخدمة في الخدمة).
لنفترض أننا تأكدنا من أن الخدمة تعمل وتريد تشغيلها عن بُعد حتى يتمكن اختبارنا من اختبارها للحصول على وظائف.
كيف تحب هذه الفكرة:
- نصنع .tar.gz مع مشروعنا وتحميله على ... مستودع عن بعد من القطع الأثرية! (أيضا ، تسمى هذه المستودعات "مستودع ثنائي").
- نقول عنوان url الذي يمكنهم من خلاله تنزيل خدماتنا وبدء الاختبار.
علاوة على ذلك ، يمكن للمختبرين بدء الخدمة إما محليًا في المنزل ، إذا كان لديهم كل شيء ، أو إنشاء ملف Dockerfile ، حيث سيكون هناك تنزيل قطعة أثرية ويبدأ تشغيل الحاوية فقط. حسنا ، أو أي شيء آخر.
سأقول على الفور ما إذا كنت لا ترغب في أن يقوم القائمون بالتجربة بإطلاق حاويات الإرساء وبصفة عامة "ليست مهمتهم" إطلاقها ، ثم استخدم أداة من شأنها جمع الصور بمجرد ظهور قطع أثرية جديدة في المستودع الثنائي (استخدم ربط الويب ، ومطاردة بشكل دوري فوق التاج).
الآن من مستودعات ثنائية هناك:
Nexus سهل الاستخدام ، حيث يحتوي على مجموعة من المستودعات المختلفة التي يمكنك إنشاؤها (npm ، maven ، raw ، عامل ميناء) لذلك يمكنني استخدامها.
هذه فكرة بسيطة لعنة ، لماذا لم أقرأ عنها في أي مكان؟ على الإنترنت ، لا يمكنك حساب المقالات "مثل على git push في مكان ما يتم نشر الحاوية في بعض أنواع kubernetes". من هذه الخوارزميات المعقدة ، يقف الشعر في النهاية.
الغرض من هذه المقالة ، أن أقول - ليس من الضروري في عملية واحدة تجميع المشروع وإضافته إلى صورة عامل الميناء.
فرق وحكم!
بناء المشروع ، ونشر القطع الأثرية في مكان للتحميل. (سجل Docker ليس هو المكان الوحيد الذي يمكنك من خلاله تخزين مشروعك ، واختيار مسارات عالمية لتقديم القطع الأثرية إلى الخوادم).
باستخدام أداة منفصلة ، قم بتقديم الأعمال الفنية إلى الخادم حيث سيعمل مشروعك.
كل شيء بسيط للغاية ، أو أعط الآخرين خيارًا: استخدم عامل ميناء ، أو ركض في kubernetes ، أو استخدم أي أداة أخرى لتشغيل القطع الأثرية. لا حاجة لفرض استخدام التكنولوجيا على الرغم من حقيقة أنه يبدو لك مريحة وعصرية للغاية.
حظا سعيدا في إطلاق مشاريعك!