چرا داکِر؟ (Docker)
برای کدنویسی برای ساختن وبسایتها و برنامههای کاربردی وب، فهمیدن دو موضوع اهمیت دارد:
- تنظیم محیط توسعۀ محلی برای پشتیبانی از ابزار موردنیاز و مؤثر کردن کدنویسی؛
- انتشار یا استقرار کد در وب.
داکر یک فناوری است که تلاشی را که برای این دو کار لازم است، به حداقل میرساند. شاید در ابتدا ارزش کاری که داکر انجام میدهد دستکم گرفته شود، بنابراین به چند سناریوی ویژهای میپردازیم که Docker در آن موجب مؤثرتر شدن گردش کار توسعه میشود.
گنجاندن یا در محفظه (کانتینر) قرار دادن محیط توسعۀ محلی
قبل از شروع توسعه در رایانه لازم است زمانی را صرف بارگیری و نصب ابزار توسعۀ متعدد کنیم. این ابزار شاید Node، Redis و MongoDB باشد. یا شاید Python، Django و MySQL. یا Ruby، Rails و Postgres و چهبسا برنامههای دیگر.
در هر سناریو احتمالاً برای اینکه کار دقیقاً مطابق میل شما پیش برود باید چند مرحله را دنبال کنید. احتمال اینکه به مشکلاتی برخورد کنید که موجب طولانی شدن زمان نصب، بیش از انتظار شود وجود دارد.
با داکر میتوانید این مؤلفهها را در محفظهها [۱] نصب کنید و برای ساخت یک تصویر تمام دستورالعملها را کامل بنویسید. سپس وقتی تصویر را ساختید، فقط با یک دستور میتوانید به محفظهای دست بیابید که همیشه دربردارندۀ نسخۀ یکسانی از کدبیس شما و وابستگیهاست. اگر چیزی در پیکربندی رایانۀ شما بههم ریخت باید زمان زیادی را صرف تعمیر آن کنید؛ اما اگر در یک محفظه اجرا شود، لازم نیست نگران تأثیر ناسازگاریهای سیستمعامل میزبان بر زمان توسعۀ خود باشید.
استقرار برنامۀ کاربردی
اجرای برنامۀ کاربردی بر رایانه نعمت بزرگی است، اما با پیچیدهتر شدن روزافزون برنامههای کاربردی، منطبق کردن محیط محلی با محیط تولید [۲] بر یک سرور گاهی مشکل میشود. داکر در این مورد نیز میتواند کمک کند. اگر محیط محلی شما فقط داکر است که محفظهها (کانتینرها) را اجرا میکند، پس اگر بتوانید داکر را بر سرور تولیدی [۳] خود اجرا کنید، همان محفظهها باید آنجا نیز کار کنند. برنامههای زیادی برای پشتیبانی سرورهای ابری [۴] وجود دارند، مثل AWS، Azure و Windows Server. اما با داکر میتوانید سرورهای خودتان را پیکربندی کنید.
اشتراک محیط با تیم
یکی از سختترین بخش کارتیمی بر برنامههای کاربردیای که از کدبیس مشابهی استفاده میکنند، استاندارد کردن محیط توسعه برای همه است. ابزاری مثل Git و GitHub مشکل اشتراک کد را در خود تیم حل کردهاند اما قبل از محفظهها (کانتینرها) بسیاری از تیمها برای پیکربندی هماهنگ دستگاههایشان، از مجموعهای از shell scripts یا فقط از دستورالعملهای داخل فایل README استفاده میکردند. با ساخت Dockerfiles و اشتراکِ تصاویر با تیم میتوان بهراحتی مطمئن شد که همه بر مبنای یکسانی کار میکنند، و بهجای اینکه انرژی تیم برای برطرفی مشکلات پیکربندی رایانههای تیم هدر برود، صرف کار توسعه میشود.
آنچه ذکر شد فقط نمونهای از فواید Docker برای توسعهدهندگان است. در مورد آزمودن (تست) و گردشهای کار توسعه نیز مزایایی دارد. اگر در مورد داکر شنیدهاید اما آموختن آن به نظرتان دشوار است، خط دید توصیه میکند دورۀ رایگان Docker را در Code School امتحان کنید.
[۱] container
[۲] Production environment
[۳] Production Server
[۴] Cloud server