ارور دسترسی روی gitlab

gitlab رو توی داکر بالا آوردم ولی بعضی از کاربران برای لاگین ارور 422 میگرفتن. بعد از بررسی متوجه شدم که باید از مسیر زیر کانفیگ رو تیک بزنیم که resource های خارجی هم بتونن دسترسی داشته باشن. چون gitlab رو روی داکر بالا میارید این وسط لودبالانسر قرار میگیره

Admin → Settings → Network → Outbound Requests 

برگه تقلب راه اندازی RabbitMQ و Celery روی داکر

برای بالا آوردن RabbitMQ و اجرای Celery به شرط تنظیمات درستش همین دستورات زیر کافیه:

راه اندازی RabbitMQ تو Docker

راه اندازی Celery:

راه اندازی مستقیم با جنگو

راه اندازی Celery beat

اکستنشن Celery beat

مانیتور flow

گشت و گذار اولیه توی داکر for inspection

دستورات اولیه کار با داکر و تنظیمات اولیه.

پیاده سازی gitlab بر روی داکر با پشتیبانگیری

برای پیاده سازی gitlab بر روی داکر از compose زیر استفاده کردم:

برای پشتیبانی گیری و برگرداندن بک آپ هم از کامند های زیر استفاده می شود:

پشتیبانگیری از کانتینر و volume داکر MySQL

یک اسکریپت نوشتم که هر روز از volume کانتینر MySQL پشتیبان بگیره و ذخیره کنه و برای تست هم خود کانتینر با volume اش رو پاک کردم و و دوباره بک آپ رو برگردوندم و تمامی جدول ها و داده های توی اون هم برگشت.

کامند پشتیبان گیری:

و با کامندهای زیر هم پشتیبان رو به روی کانتینر جدید برگردوندم:

لازمه که بدونیم که خود کانتینر با compose زیر ساخته شده و دو تا volume داره:

فایل Compose برای MySQL

میخایم یه کانتینر از MySQL بسازیم به صورتی که فایلهای دیتابیس شامل کانفیگ هاش توی یک volume ذخیره بشه.

برای این کار باید فایل compose به صورت زیر باشه:

مقایسه docker volume و bind mount

توی داکر به سه شکل میتونیم فایل ها رو با خود هاست داکر به اشتراک بزاریم. اگر یک کانتینر از بین بره طبیعتا تمامی داده های توی اون هم از بین میره و این خطرناکه.

داکر یک مکانیزم داره به اسم volume که اینها رو خود داکر مدیریت میکنه و اگر کانتینر خاموش بشه یا از بین بره میشه یه کانتینر دیگه بالا آورد که از اون استفاده کنه. البته بهتره قبل از پاک کردن کانتینر فعلی یکی دیگه بسازیم.

توی داکر میشه بجای volume از bind mount هم استفاده کرد. bind mount ساده است مثل اینکه یک فولدر رو بین کانتینر و هاست فعلی به اشتراک بزاریم.

حالت بعدی استفاده از tmpfs هست که فقط در صورتی که هاست لینوکس باشه قابل استفاده است. و این دیتا توی حافظه memory ذخیره میشه بنابراین دائمی نیست.

شمای کلی قابلیت های داکر در این زمینه توی عکس زیر معلومه:

پشتیبانگیری از docker containers

یکی از چالش هایی که برخوردیم پشتیبان گیری از سرویس هایی بود که روی داکر هستن. چند تا اپلیکیشن و یک دیتابیس داریم که هر کدوم توی یک container هستن. طبیعتا اگر container پاک بشه تمامی اون داده ها هم از بین می روند. برای اینکه این اتفاق نیوفته باید پشتیبان بگیریم.

data volume توی برای نگهداری دیتا خارج از فایل سیستم کانتینر هست. داکر هیچ وقت این data volume ها رو پاک نمیکنه مگر اینکه خودمون volume های مربوط به یک کانتینر رو باهاش پاک کنیم.

docker rm -v

اگر همه کانتینرهایی که با یک volume کار میکنن رو پاک کنیم، پاک کردن و دسترسی به اون volume سخت میشه. به این volume ها میگن dangling volume. برای اینکه dangling volume وجود نداشته باشه بهتره همیشه یک کانتینر مرتبط با اون volume بسازیم.

برای اینکه بک آپ کاملی داشته باشیم باید از موارد زیر پشتیبان بگیریم:

  • image های داکر
    • از کانتینرهای داکر
    • از volume های موجود