استقرار بدون توقف سرویس با Docker Compose؛ راهنمای گام‌به‌گام

آپدیت رولینگ، health check ها و ترتیب دقیق فلگ‌ها؛ چطور یک استک Docker Compose را بدون افتادن حتی یک درخواست به‌روزرسانی کنیم.

۲۷ شهریور ۱۴۰۵

socials-vertical icons
استقرار بدون توقف سرویس با Docker Compose؛ راهنمای گام‌به‌گام post featured image

استقرار بدون توقف سرویس با Docker Compose

هدف

راه‌اندازیِ مجددی که سایت را چند ثانیه آفلاین کند، استقراری است که بی‌سروصدا شکست خورده. با یک ریورس پراکسی جلوی سرویس‌ها و یک health check پشت آن، می‌شود استک را طوری به‌روزرسانی کرد که کانتینر قدیمی تا وقتی جدید آماده شود به درخواست‌ها پاسخ دهد.

اول health check ها

کامپوز به شما اجازه می‌دهد برای هر سرویس یک healthcheck تعریف کنید.

  • پراکسی فقط به کانتینرهایی که «healthy» اعلام شده‌اند ترافیک بدهد.
  • اندپوینت سلامت فقط ۲۰۰ نباشد؛ باید اتصال به دیتابیس پشت آن را هم بررسی کند.
  • برای بوت اول، start_period سخاوتمندانه بگذار.

تاکتیک به‌روزرسانی

وقتی `docker compose up -d` اجرا می‌کنید، کامپوز کانتینرهای تغییرکرده را یکی‌یکی بازسازی می‌کند. این را کنار یک پراکسی در حال اجرا بگذارید و یک آپدیت رولینگ رایگان دارید.

  • مهاجرت‌ها و کارهای طولانی را به‌عنوان سرویس جداگانه‌ی one-shot و قبل از ری‌استارت وب اجرا کن.
  • بگذار کانتینر جدید قبل از حذف کانتینر قدیمی به حالت healthy برسد.
  • هنگام جابه‌جایی لاگ‌ها را تماشا کن؛ برنامه «بگذار و برو» نیست.

دیپلوی این وبلاگ واقعاً چه می‌کند

اسکریپت استقرار این سایت تصاویر جدید را می‌کشد، قبل از مهاجرت‌ها یک گارد اجرا می‌کند، کانتینرهای جدید را بالا می‌آورد و بعد از آن URL سلامت می‌گیرد تا قبل از اعلام موفقیت، ۲۰۰ بودن را ببیند. همین قدمِ راستی‌آزمایی است که استقرار را از آرزو به واقعیت تبدیل می‌کند.

جمع‌بندی

عدم توقف سرویس ترکیبی از عادت‌های کوچک است: اندپوینت سلامتِ واقعی، پراکسی‌ای که به آن احترام می‌گذارد و اسکریپتی که زود خوشحال نمی‌شود. بررسی‌ها را خودکار کن؛ همکارانت تشکر می‌کنند.

socials-vertical icons

210

socials-vertical icons

2400

you might also like...

Zero-Downtime Deployments with Docker Compose: A Step-by-Step Guide post featured imageZero-Downtime Deployments with Docker Compose: A Step-by-Step Guide

Rolling updates, health checks and the careful order of flags — how to update a Docker Compose stack without dropping a single request.

parsaaghayi's blog logoparsaaghayi's blog logo

© 2024

All Rights Reserved , Inc.

parsa aghayi
استقرار بدون توقف سرویس با Docker Compose؛ راهنمای گام‌به‌گام | Parsa Aghayi's Blog