Skip to main content

داکر کامپوز

کوچ از Docker Compose به Kubernetes

از داکرکامپوز معمولا برای بالا آوردن استک نرم‌افزاری روی یک سرور یا در محیط توسعه محلی استفاده می شود. سروری که نرم‌افزار شما روی آن اجرا می‌شود می‌تواند گلوگاه مقیاس‌پذیری و یا دسترسی‌پذیری باشد. این در حالی است که Kubernetes می‌تواند در بستری با سرور‌های متعدد و networking یک‌پارچه و قابل‌اتکا مستقر شود و بار محاسباتی را به طور هوش‌مند بین آن‌ سرور‌ها توزیع کند. هم‌چنین، معماری Kubernetes دارای درجه بالایی از extensibility است. این ویژگی، کنار مزیت‌های جدی دیگر، باعث پیدایش اکوسیستم بزرگی از توسعه‌دهندگان و کاربران پیرامون Kubernetes شده‌ و هر روز در حال گسترش است. در نتیجه، ابزار‌های فراوان Cloud Native با کارایی‌های متنوع و توان‌مندی برای استفاده در این بستر توسعه داده شده است. ابعاد و پیچیدگی‌های متنوع آن، اغلب کوچ به Kubernetes را دشوار می‌کند. در راستای کمینه کردن هزینه این کوچ، پلتفرم استقرار ابری (PaaS) هم‌روش رابط کاربری ساده‌ و توان‌مندی را برای ساخت و نگه‌داری اپلیکیشن در بستر Kubernetes در اختیار توسعه‌دهندگان قرار می‌دهد.

تبدیل یک فایل docker-compose.yml به اپ‌های دارکوبی

با توجه به این که بسیاری از کاربران قبلا از Docker Compose استفاده می‌کرده‌اند، کنسول هم‌روش قابلیت تبدیل یک فایل docker-compose.yml به اپ‌های دارکوبی را به نحوی ساده ارائه می‌کند. با این حساب، نه تنها از سادگی استفاده از دارکوب برای نگه‌داری از اپ‌های خود بهره‌مند خواهید شد، بلکه برای برای کوچ از Docker Compose به Kubernetes مسیر راحت‌تری پیش پای شما قرار دارد. در ادامه، مثالی از تبدیل یک فایل docker-compose.yml برای نرم‌افزار WordPress توضیح داده شده است.

در این قسمت از فایل docker-compose.yml زیر که یک نسخه از WordPress و MySQL را دیپلوی می‌کند استفاده شده است.

version: "3"

services:
wp-mysql:
image: mysql:5.7
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: secret
volumes:
- wp-mysql_data:/var/lib/mysql
wordpress:
depends_on:
- wp-mysql
image: wordpress:5.8
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: wp-mysql:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: secret
volumes:
- wordpress_data:/var/www/html

volumes:
wp-mysql_data: {}
wordpress_data: {}

به منظور تبدیل این دو سرویس به اپ‌های دارکوبی، می‌توانید مراحل زیر را طی کنید.

تشخیص سرویس‌ها

به صفحه دارکوب در کنسول هم‌روش مراجعه کنید. سپس در قسمت «ساخت اپ»، «داکر کامپوز» را انتخاب کنید. در این صفحه، محتوای فایل docker-compose.yml را وارد کنید.

در لحظه، دو سرویس‌ wp-mysql و wordpress موجود در فایل docker-compose.yml تشخیص داده می‌شوند.

ساخت سرویس‌ها

با کلیک روی تنظیمات اپ wp-mysql به فرایند ساخت این اپ منتقل خواهید شد. مراحل پیش رو عملا شبیه به مراحل ساخت اپ توسط داکر ایمیج است.

ابتدا Docker image وارد شده را تایید کنید.

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

سپس در صفحه بعد، کلاستر، namespace و منابع مورد نظر خود را مشخص کنید. خواهید دید که در صورت وجود volumes در تعریف سرویس، فضای ذخیره‌سازی در مسیر مناسب در نظر گرفته خواهد شد. می‌توانید سایز آن را از مقدار پیش‌فرض تغییر دهید.

با انتخاب گزینه «ساخت اپ»، سرویس wp-mysql ساخته می‌شود و به صفحه سرویس‌های Docker Compose منتقل خواهید شد.

سپس، می‌توانید مراحل مشابه قسمت قبل را برای ساخت سرویس wordpress طی کنید. این بار، می‌توانید، علاوه‌بر اطلاعاتی که به طور خودکار تشخیص داده می‌شوند، آدرس دامنه‌ای را نیز در صحفه تنظیمات اپ مشخص کنید تا نسخه WordPress از اینترنت قابل دسترس باشد.

استفاده از اپ‌های ساخته‌شده

در نهایت، دو اپ دارکوبی جدید با نام‌های wp-mysql و wordpress به اپ‌های شما اضافه می‌شوند. می‌توانید با رجوع به تب دارکوب در کنسول هم‌روش، آن‌ها را یافته و اطلاعات‌شان را ویرایش دهید.

با مراجعه به آدرس دامنه‌ای که برگزیدید، می‌توانید به تنظیم نسخه جدید WordPress خود بپردازید.

شرایط فایل Docker Compose

لازم به ذکر است که قابلیت ساخت اپ با استفاده از Docker Compose، زیر‌مجموعه‌‌ای از کلید‌های پرکاربرد‌ یک فایل docker-compose.yml را پشتیبانی می‌کند. در ادامه لیست آن‌ها آمده‌است. هم‌چنین، لازم است نسخه Docker Compose حداقل 3.0 باشد.

  1. image
  2. command
  3. entrypoint
  4. ports
  5. environment
  6. volumes
  7. depends_on