داکرایز کردن پروژه
نوشتن Dockerfile چندمرحله ای (multi-stage) برای هر سرویس، با ایمیج پایه سبک، کاربر غیر root و فایل .dockerignore درست.
شروع و ارزیابی
ارزیابی رایگان 5مشکل فوری
خدمات فوری 4پشتیبانی مستمر
قرارداد پشتیبانی 5پروژه ها
سرور و هاستینگ 6 شبکه و مجازی سازی 9 دواپس و اتوماسیون 5 امنیت و بازیابی 5 تجهیزات و لایسنس 2بدون هزینه بفهمید وضعیت سرور، امنیت، بکاپ و سرعت سیستم هایتان چطور است.
سرور یا شبکه قطع است، سایت هک شده یا اطلاعات از دست رفته؟ همین حالا تماس بگیرید.
پشتیبانی و نگهداری ماهانه شبکه و سرور با زمان پاسخ مشخص در قرارداد.
نصب، کانفیگ، مدیریت و انتقال سرورهای لینوکس، ویندوز، کنترل پنل ها و ایمیل سرور.
طراحی و اجرای شبکه، میکروتیک، ویپ، اتصال شعب، مجازی سازی و ابر خصوصی.
شبکه و ارتباطات
مجازی سازی و ابر
کانتینر، کوبرنتیز، استقرار خودکار، زیرساخت به عنوان کد و مانیتورینگ پیشرفته.
امن سازی سرور، فایروال، بکاپ و DR، بازیابی از باج افزار و بررسی حملات.
مشاوره، تأمین و نصب سرور و تجهیزات شبکه، و لایسنس اورجینال نرم افزارهای سازمانی.
شروع و ارزیابی
مشکل فوری
پشتیبانی مستمر
پروژه ها
وقتی برنامه روی سیستم برنامه نویس درست کار می کند و روی سرور خطا می دهد، علت معمولاً تفاوت محیط است و راه اندازی داکر برای رفع همین تفاوت است. ما برنامه و وابستگی هایش را در ایمیج های کوچک و قابل تکرار بسته بندی می کنیم و اجرای آن را روی سرور شما با Docker Compose مرتب می کنیم.
راه اندازی داکر یعنی بسته بندی برنامه و وابستگی هایش در ایمیج های کانتینری کوچک و قابل تکرار و اجرای آن ها روی سرور با Docker Compose، تا برنامه روی سرور همان طور کار کند که روی سیستم توسعه. این خدمت برای تیم نرم افزاری است که برنامه اش روی سرور تست کار می کند و روی سرور اصلی خطا می دهد، یا چند برنامه اش سر نسخه PHP یا Node تداخل دارند. پیکوسیستم برای هر سرویس Dockerfile چندمرحله ای می نویسد، فایل compose.yaml را با healthcheck و سیاست restart تنظیم می کند، رجیستری خصوصی Harbor و mirror داخلی راه می اندازد تا build به Docker Hub وابسته نماند و ایمیج ها را با Trivy اسکن می کند. در پایان Dockerfile و compose.yaml در مخزن گیت، رجیستری آماده، مستند به روزرسانی و rollback و گزارش اسکن امنیتی را تحویل می گیرید.
نوشتن Dockerfile چندمرحله ای (multi-stage) برای هر سرویس، با ایمیج پایه سبک، کاربر غیر root و فایل .dockerignore درست.
تعریف سرویس ها، شبکه ها، volumeها و متغیرهای محیطی در compose.yaml، با healthcheck و سیاست restart برای هر کانتینر.
راه اندازی Harbor یا Docker Registry روی سرور خودتان برای نگهداری ایمیج ها. به خاطر محدودیت دسترسی به Docker Hub، یک mirror داخلی هم تنظیم می کنیم.
اسکن ایمیج ها با Trivy، حذف capabilityهای غیرلازم، فقط خواندنی کردن فایل سیستم در جای ممکن و ندادن دسترسی docker.sock به کانتینرها.
تنظیم log driver و چرخش لاگ تا دیسک پر نشود، و تعیین سقف CPU و حافظه برای هر کانتینر.
پیش از نوشتن اولین Dockerfile، چند چیز در خود برنامه باید روشن باشد. تنظیماتی مثل آدرس دیتابیس، کلیدهای API و حالت debug باید از متغیر محیطی خوانده شوند و داخل کد یا ایمیج ننشینند. فایل های آپلودشده کاربران، سشن ها و cache هم باید مسیر مشخصی داشته باشند تا روی volume یا سرویس جداگانه بروند، چون داده داخل کانتینر با ساختن دوباره آن از بین می رود.
برنامه بهتر است لاگ را روی stdout و stderr بنویسد تا Docker آن را جمع کند، و یک مسیر ساده مثل /health برای healthcheck داشته باشد. کارهای زمان بندی شده ای که امروز در crontab سرور اجرا می شوند و migrationهای دیتابیس هم باید مشخص شوند تا بدانیم کجا و کی اجرا شوند.
رایج ترین اشتباهی که در سرورها می بینیم، منتشر کردن پورت دیتابیس با 3306:3306 است. Docker برای پورت های منتشرشده قاعده iptables خودش را می سازد و این قاعده از ufw عبور می کند، پس دیتابیسی که فکر می کنید پشت فایروال است ممکن است از اینترنت در دسترس باشد.
اشتباه بعدی تگ latest است که معلوم نمی کند روی سرور دقیقاً کدام نسخه اجراست و rollback را به حدس تبدیل می کند. depends_on بدون condition: service_healthy هم فقط ترتیب روشن شدن را تعیین می کند و منتظر آماده شدن دیتابیس نمی ماند. رمزهای commit شده داخل compose.yaml و log driver پیش فرض json-file بدون max-size هم تقریباً در هر بررسی پیدا می شوند.
تعداد سرویس ها مهم است، ولی ساختار آن ها اثر بیشتری دارد. یک برنامه Laravel یا Django که به روش متداول نوشته شده معمولاً سریع داکرایز می شود. برنامه قدیمی که به نسخه خاصی از PHP، افزونه های کامپایل شده یا فایل هایی در مسیرهای ثابت سیستم عامل وابسته است، کار بیشتری می برد.
عوامل دیگر تعداد محیط ها، راه اندازی رجیستری خصوصی و mirror از صفر، حجم داده ای که باید به volume منتقل شود و اتصال ساخت ایمیج به پایپ لاین CI است.
ایمیج بعد از build ثابت می ماند، ولی ایمیج پایه آن به روزرسانی امنیتی می گیرد. اگر ایمیج ها را دوره ای دوباره نسازید، کتابخانه های آسیب پذیر ماه ها روی سرور می مانند. اسکن منظم با Trivy و build دوباره روی ایمیج پایه تازه این مشکل را حل می کند.
فضای دیسک هم توجه می خواهد. ایمیج ها و لایه های بلااستفاده جمع می شوند و docker system df نشان می دهد چقدر فضا گرفته اند. در Harbor هم garbage collection باید زمان بندی شود. به روزرسانی Docker Engine و افزونه compose را اول روی سرور تست انجام دهید، چون گاهی رفتار شبکه یا نام گذاری کانتینرها بین نسخه ها تغییر می کند.
ساختار کد، وابستگی ها، دیتابیس و روش فعلی استقرار را بررسی می کنیم و مشخص می کنیم چه چیزی داخل کانتینر برود و چه چیزی بیرون بماند.
Dockerfileها را می نویسیم، حجم ایمیج و زمان build را کم می کنیم و همه چیز را روی محیط تست اجرا می کنیم.
Docker Engine را روی سرور نصب و تنظیم می کنیم، داده ها را به volume منتقل می کنیم و سرویس را پشت Nginx یا Traefik قرار می دهیم.
مستندات را تحویل می دهیم و همراه تیم شما یک به روزرسانی و یک rollback را عملاً اجرا می کنیم.
داکر برنامه را همراه وابستگی هایش در کانتینر بسته بندی و اجرا می کند و کوبرنتیز اجرای کانتینرها را روی چند سرور مدیریت می کند. برای بیشتر پروژه های کوچک و متوسط، Docker Compose روی یک یا دو سرور کافی است. کوبرنتیز وقتی معنا دارد که سرویس های زیادی دارید، مقیاس پذیری خودکار لازم است یا تیمی برای نگهداری آن دارید. در جلسه اول همین را با شما بررسی می کنیم.
ممکن است، به شرط اینکه داده روی volume پایدار باشد و بکاپ منظم داشته باشد. برای دیتابیس های پرترافیک معمولاً اجرای مستقیم روی سرور یا یک ماشین مجازی جداگانه را پیشنهاد می کنیم. تصمیم نهایی به حجم داده و نیاز بازیابی بستگی دارد.
یک رجیستری خصوصی یا mirror داخلی روی سرور شما راه اندازی می کنیم تا ایمیج های پایه یک بار دریافت و از همان جا استفاده شوند. به این ترتیب build و استقرار به دسترسی بیرونی وابسته نمی ماند.
بله. در مشاوره داکر، ساختار ایمیج ها، محیط توسعه محلی با Compose و مسیر رسیدن به استقرار خودکار را با تیم برنامه نویسی طراحی می کنیم. اجرا می تواند با تیم شما یا با ما باشد.
جست وجوهای مرتبط
دواپس
دواپس استعلام
چند خط درباره وضعیت فعلی و چیزی که می خواهید بنویسید. یک مهندس خودش تماس می گیرد، نه واحد فروش.