پیکوسیستم خدمات فنی IT
دواپس و اتوماسیون

راه اندازی داکر و Docker Compose روی سرور

داکر بسته بندی برنامه و وابستگی های آن را قابل تکرارتر می کند، اما تفاوت سخت افزار، شبکه، تنظیمات و داده را به تنهایی برطرف نمی کند. محیط فعلی را بررسی می کنیم و Dockerfile و تنظیمات Compose را متناسب با نیاز و آزمون پذیرش پروژه آماده می کنیم.

ابزارها و فناوری ها docker
  • Docker
  • Docker Compose
  • Harbor
  • Trivy
  • Traefik
  • Nginx
  • BuildKit
  • Portainer
5بخش کار
4خروجی
4مرحله

راه اندازی داکر چیست؟

این خدمت برای بسته بندی و استقرار برنامه با Docker و Compose است. پیش از اجرا، وابستگی ها، پلتفرم مقصد، داده پایدار، دسترسی ها و نیاز بازیابی بررسی می شوند. Dockerfile، تنظیمات Compose و مستند استقرار و برگشت در دامنه توافق شده تحویل داده می شوند. رجیستری خصوصی، mirror، اسکن ایمیج و اتصال CI بر اساس نیاز پروژه تعیین می شوند. mirror دریافت تکراری را کاهش می دهد؛ مستقل شدن از اینترنت به آماده بودن همه ایمیج ها و سایر وابستگی های build نیاز دارد و باید جداگانه آزمایش شود.

چه زمانی به راه اندازی داکر نیاز دارید؟

  • روی سرور تست کار می کند ولی روی سرور اصلی خطا می دهد.
  • نصب پروژه روی یک سرور جدید چند روز طول می کشد.
  • چند برنامه روی یک سرور سر نسخه PHP یا Node با هم تداخل دارند.
  • ایمیج های داکر ما چند گیگابایت اند و build خیلی کند است.

راه اندازی داکر شامل چه کارهایی است؟

01

داکرایز کردن پروژه

نوشتن Dockerfile چندمرحله ای (multi-stage) برای هر سرویس، با ایمیج پایه سبک، کاربر غیر root و فایل .dockerignore درست.

02

فایل Docker Compose

تعریف سرویس ها، شبکه ها، volumeها و متغیرهای محیطی در compose.yaml، با healthcheck و سیاست restart برای هر کانتینر.

03

رجیستری خصوصی

راه اندازی Harbor یا Docker Registry روی سرور خودتان برای نگهداری ایمیج ها. به خاطر محدودیت دسترسی به Docker Hub، یک mirror داخلی هم تنظیم می کنیم.

04

امنیت کانتینرها

اسکن ایمیج ها با Trivy، حذف capabilityهای غیرلازم، فقط خواندنی کردن فایل سیستم در جای ممکن و ندادن دسترسی docker.sock به کانتینرها.

05

لاگ و سقف منابع

تنظیم log driver و چرخش لاگ تا دیسک پر نشود، و تعیین سقف CPU و حافظه برای هر کانتینر.

بعد از راه اندازی داکر چه چیزی تحویل می گیرید؟

  • Dockerfile و compose.yaml نسخه بندی شده در مخزن گیت شما
  • رجیستری خصوصی آماده با دسترسی های تعریف شده
  • مستند اجرا با دستورهای دقیق راه اندازی، به روزرسانی و rollback
  • گزارش اسکن امنیتی ایمیج ها

راهنمای راه اندازی داکر

داکرایز کردن پروژه چه آمادگی از سمت برنامه می خواهد؟

تنظیمات عادی برنامه باید از کد و ایمیج جدا باشند. رمز و کلید را در Dockerfile، ARG، ENV یا فایل commit شده قرار ندهید؛ برای build از secret mount و برای اجرا از روش مدیریت secrets متناسب با محیط استفاده کنید. مسیر داده های پایدار، بکاپ و آزمون بازیابی را مشخص کنید؛ حذف و جایگزینی کانتینر می تواند داده لایه قابل نوشتن آن را از بین ببرد. لاگ، healthcheck، migration و کارهای زمان بندی شده نیز باید مسئول و روش اجرا داشته باشند.

اشتباهات رایج در فایل Docker Compose YAML

انتشار پورت دیتابیس مانند 3306:3306 می تواند آن را از میزبان های دیگر قابل دسترس کند. در شبکه bridge لینوکس، قواعد Docker ممکن است مسیر مورد انتظار ufw را دور بزنند؛ دسترسی را با توجه به backend و توپولوژی واقعی از بیرون آزمایش کنید. تگ قابل تغییر مانند latest، مرجع ثابتی برای بازگشت نیست؛ برای ارجاع دقیق، digest ایمیج را ثبت و همان ایمیج را برای بازگشت نگه دارید؛ تگ نسخه نیز ممکن است تغییر کند و سیاست به روزرسانی جدا لازم است. depends_on به تنهایی آماده بودن برنامه را تضمین نمی کند؛ برای وابستگی مناسب، healthcheck و condition: service_healthy را تنظیم و رفتار زمان اجرا را جدا آزمایش کنید. secrets و محدودیت حجم لاگ را نیز بازبینی کنید.

هزینه راه اندازی داکر را تعداد سرویس ها تعیین می کند یا ساختار آن ها؟

تعداد سرویس ها مهم است، ولی ساختار آن ها اثر بیشتری دارد. یک برنامه Laravel یا Django که به روش متداول نوشته شده معمولاً سریع داکرایز می شود. برنامه قدیمی که به نسخه خاصی از PHP، افزونه های کامپایل شده یا فایل هایی در مسیرهای ثابت سیستم عامل وابسته است، کار بیشتری می برد.

تعداد محیط ها، راه اندازی رجیستری خصوصی و mirror از صفر، حجم داده ای که باید به volume منتقل شود و اتصال ساخت ایمیج به پایپ لاین CI هم در برآورد می آیند.

بعد از نصب و راه اندازی داکر، نگهداری چه کارهایی دارد؟

ایمیج های ساخته شده خودکار با اصلاح ایمیج پایه به روز نمی شوند. نتیجه اسکن، نسخه وابستگی ها و اصلاح موجود را بررسی کنید؛ سپس rebuild، آزمون و استقرار کنترل شده انجام دهید. اسکن و rebuild به تنهایی نبود آسیب پذیری را تضمین نمی کنند. فضای دیسک را با docker system df بررسی کنید و پیش از پاکسازی، داده و ایمیج های لازم برای بازیابی را مشخص کنید. ارتقای Engine، Compose و تنظیمات رجیستری ابتدا در محیط آزمایش بررسی شود.

مراحل راه اندازی داکر

  1. 01

    بررسی پروژه

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

  2. 02

    ساخت ایمیج ها

    Dockerfileها را می نویسیم، حجم ایمیج و زمان build را کم می کنیم و همه چیز را روی محیط تست اجرا می کنیم.

  3. 03

    استقرار روی سرور

    Docker Engine را روی سرور نصب و تنظیم می کنیم، داده ها را به volume منتقل می کنیم و سرویس را پشت Nginx یا Traefik قرار می دهیم.

  4. 04

    تحویل و آموزش

    مستندات را می سپاریم و یک به روزرسانی و یک rollback واقعی را کنار تیم شما اجرا می کنیم.

سؤالات متداول درباره راه اندازی داکر

داکر و کوبرنتیز چیست و برای استفاده از داکر حتماً به کوبرنتیز نیاز داریم؟

داکر برنامه را همراه وابستگی هایش در کانتینر بسته بندی و اجرا می کند و کوبرنتیز اجرای کانتینرها را روی چند سرور مدیریت می کند. برای بیشتر پروژه های کوچک و متوسط، Docker Compose روی یک یا دو سرور کافی است. کوبرنتیز وقتی معنا دارد که سرویس های زیادی دارید، مقیاس پذیری خودکار لازم است یا تیمی برای نگهداری آن دارید، و این را در جلسه اول با هم می سنجیم.

دیتابیس را هم داخل کانتینر بگذاریم؟

ممکن است، به شرط اینکه داده روی volume پایدار باشد و بکاپ منظم داشته باشد. برای دیتابیس های پرترافیک معمولاً اجرای مستقیم روی سرور یا یک ماشین مجازی جداگانه را پیشنهاد می کنیم، و انتخاب نهایی را حجم داده و نیاز بازیابی مشخص می کند.

Docker Hub از ایران در دسترس نیست؛ build و استقرار چطور انجام می شود؟

رجیستری خصوصی و mirror می توانند دریافت های تکراری را کم کنند، اما دریافت اولیه، بررسی به روز بودن تگ ها و سایر وابستگی های build ممکن است همچنان به بیرون نیاز داشته باشد. برای کار آفلاین، ایمیج ها و وابستگی های لازم باید از قبل در محیط مجاز آماده شوند و build و بازیابی بدون دسترسی بیرونی جداگانه آزموده شود.

مشاوره داکر برای پروژه ای که هنوز در حال توسعه است هم ارائه می دهید؟

بله. در مشاوره داکر، ساختار ایمیج ها، محیط توسعه محلی با Compose و مسیر رسیدن به استقرار خودکار را با تیم برنامه نویسی طراحی می کنیم. اجرا می تواند با تیم شما یا با ما باشد.

جست وجوهای مرتبط

  • نصب و راه اندازی داکر
  • Docker Compose
  • داکر و کوبرنتیز
  • داکر و کانتینر چیست
  • Docker Compose YAML
  • داکر چیست و چه کاربردی دارد

مقاله های مرتبط

استعلام

کارتان را بگویید، مسیر و هزینه را می گوییم

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

  1. 01درخواست را می خوانیم و اگر ابهامی بود تماس می گیریم.
  2. 02در صورت نیاز، بررسی اولیه ریموت یا بازدید انجام می شود.
  3. 03پیشنهاد مکتوب با دامنه کار، زمان بندی و هزینه می فرستیم.

اطلاعات شما فقط برای پاسخ به همین درخواست استفاده می شود. حریم خصوصی