بناء الصورة دون المساس بقاعدة البيانات

أردتُ فعل نفس ما فعلتُ أنت - فنحن ندير discourse على Amazon ECS، لذا كان علينا أن نتمكن من بناء صورة الويب فقط ودفعها إلى سجل. لم أرغب في العبث بعملية بناء discourse لأننا نرغب في البقاء أقرب ما يمكن إلى التثبيت المدعوم.

بدلاً من ذلك، نستخدم سكريبت launcher العادي لبناء إعداد مكون من حاويتين على جهاز محلي، ولكن نتجاهل حاوية البيانات ونقوم بدفع حاوية الويب إلى السجل. وعند وقت التشغيل، نجاوز تفاصيل اتصال Postgres و Redis عبر متغيرات البيئة.

تتم عملية نشر الصورة الجديدة في ثلاث خطوات:

  1. تشغيل عمليات الترحيل الآمنة قبل النشر. اطلب من ECS تنفيذ هذا الأمر (مع الصورة الجديدة):

     SKIP_POST_DEPLOYMENT_MIGRATIONS=1 rake db:migrate
    
  2. نشر الصورة الجديدة. قم بتحديث خدمة ECS.

  3. تشغيل عمليات الترحيل بعد النشر. اطلب من ECS تنفيذ هذا الأمر:

     SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate
    

من المحتمل أن تشغيل حاوية بيانات محلية أثناء بناء الصورة هو أمر مضيعة، لكنه يعني أننا يمكننا استخدام web.template.yml القياسي دون القلق بشأن الأجزاء التي تحاول التواصل مع قاعدة البيانات أو Redis.

8 إعجابات