ساخت compose file docker قسمت اول

در مقالات قبلی لینک یک - لینک دو نحوه ساخت داکر فایل را توضیح دادم، حال زمان آن فرا رسیده که یک قدم جلوتر بریم، قدرت داکر فقط ساخت کانتینر های ساده نیست، از نظر من قدرت داکر یکسری کانتیرنر متفاوت را به صورت خیلی ساده ساختن، اجرا کردن و مدیریت کردنش هست، برای این کار از کامپوز فایل استفاده خواهیم کرد.اگر بخواهیم در مورد کامپوز فایل داکر یه فکری داشته باشیم، به نظرم داکر را با یک ارکستر مقایسه کردن هست.بیاید یک محاسبه سمفونی را انجام دهیم. برای محاسبه نیاز داریم هر کس نقش خود را به صورت دقیق انجام دهد و خود ارکستر هم باید هماهنگ با همه کار کند، کانتینر های داکر هم مانند موزیسین های متفاوت هست. در این متافور برای هماهنگ کردن همه نیاز به یک سرپرست تیم داریم. کامپوز فایل داکر،مانند سرپرست ارکسترهایی هست که همه را در یک صفحه و یک ریتم نگه میدارد. کانتینر یه اسطلاح مشترک برای تنظیم و ارکستراسیون در کانتینر سازی هست و کامپوز فایل داکر رهبر تمام کانتینر ها.بیاید شروع کنیم.کامپوز فایل داکر برای اینکه متوجه بشود چگونه کار کنه یه پوشه ایجاد کنید و در داخل آن نوشته های پاراف زیر را در فایل docker-compose.yml ذخیره کنید.version: '2'services: nginx-compose-project-1: image: nginx:latest ports: - "8080:80" nginx-compose-project-2: image: nginx:latest ports: - "8081:80"با نوشتن “version: ‘2’ ” در سطر اول فایل یامل میخواهیم بگویم که این فایل ورژن 1.6 هست و نسبت به این ورژن فایل رو تفسیر بکن. فایل docker-compose.yml حاوی اطلاعات، ساخت ایمیج ها،پارامتر های مورد نیاز کانتینرها، اجرای کانتینرها و چگونگی ارتباطاتشان هست.مهم ترین بخش این فایل همانطور که مشاهده میکیند تعریف “:services” می باشد، همان بخشی که میخواهیم کانتینرهامون رو طراحی کنیم و شکل بدیم. در اینجا میگیم کانتینر “nginx-compose-project-1” و“nginx-compose-project-2” را اجرا بکن، همانطور که مشاهده میکنید هر دو زیر بخش services می باشند، از چه ایمیجی باید ساخته شود و روی چه پورتی باید مپ شود را هم مشخص میکنیم برای هر دو کانتینر. اگر نیاز باشد Volume و متغیرهای Environment را هم میتوایند همین جا اضافه کنید. معمولا پارامترهایی که برای اجرای یک کانتینر یا ساخت ایمیج نیاز هست را در این قسمت مشاهده میکنید.برای ساخت و اجرای کانتینر ها بجای اینکه از چندین دستور داکر استفاده کنیم تنها با یک دستور این کار قابل انجام هست اگر از کامپوز فایل استفاده کنیم.برای ایجاد یک کامپوز فایل داکر و اطلاعات کافی را از این قسمت میتوانید مطالعه بکنید.به طور خلاصه کامپوز فایل داکر یه ابزار کاربردی خیلی آسان برای اجرای اپلیکیشن پیچده میباشد. نحوه اجرای کامپوز فایل داکرابتدا از خط فرمان به مسیر docker-compose.yml سویچ شده و دستور زیر را نوشته و اجرا میکنیم.docker-compose upداکر کامپوز، کانتینر های مارو به صورت ایزوله و داخل یک شبکه مستقر خواهد کرد. برای دسترسی به کانتینر های در حال اجرا، یا از طریق شبکه ای که در آن هستند و یا از طریق لینک هایی که در سیستم عامل تعریف شده امکان پذیر هست. سطر اول لیست زیر، مشخصات شبکه ساخته شده هست.Creating network "nginx-compose-project_default" with the default driverCreating nginx-compose-project_nginx-compose-project-2_1 ... doneCreating nginx-compose-project_nginx-compose-project-1_1 ... doneAttaching to nginx-compose-project_nginx-compose-project-1_1, nginx-compose-project_nginx-compose-project-2_1در این بخش فقط با اجرای دستور docker-compose up دو کانتینر توانستیم ایجاد کنیم. از پورت های 8080 و 8081 میتوانید از براوزر دسترسی داشته باشید.یک کنسول جدید باز کنید و با اجرای دستور “docker ps” کانتینرهایی که در حال اجرا هستند رو میتوانید مشاهده بکنید.CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4c5104b1b16d nginx:latest "nginx -g 'daemon of…" 55 seconds ago Up 52 seconds 0.0.0.0:8080->80/tcp nginx-compose-project_nginx-compose-project-1_13c722827b97a nginx:latest "nginx -g 'daemon of…" 55 seconds ago Up 52 seconds 0.0.0.0:8081->80/tcp nginx-compose-project_nginx-compose-project-2_1در کنسولی که دستور “docker-compose up” را اجرا کرده بودید با دستور Ctrl+C خارج بشید، وقتی دوباره دستور “docker ps” را اجرا کنید، خالی بودن لیست را متوجه خواهید شد.اگر با دستور “docker-compose up -d” اجرا کرده بودیم حین خروج از کانتینرها، متوقف نمیشدند.برای دیدن لیست داکر کامپوزهای در حال اجرای آنها، بعد از وارد شدن به مسیر docker-compose.yml دستور زیر را اجرا بکنید.docker-compose psاجرای دستور بالا همچین نتیجه های خواهد داشت.Name Command State Ports-----------------------------------------------------------------------------------------------------nginx-compose-project_nginx-compose-project-1_1 nginx -g daemon off; Up 0.0.0.0:8080->80/tcpnginx-compose-project_nginx-compose-project-2_1 nginx -g daemon off; Up 0.0.0.0:8081->80/tcpبا دستور زیر به لاگ های داکر کامپوز های در حال اجرا میتوانید نگاه کنید.docker-compose logs کامپوز فایلی را که با پارامتر d- ران کردیم برای خارج شدن و متوقف کردنش بعد از وارد شدن به مسیر فایل یامل دستور زیر را اجرا کنید.docker-compose downبعد از اجرای این دستور شاهد متوقف شدن کانتینرهای ساخته شده کامپوز فایل و حذف شدن شبکه پیشفرض ایجاد شده خواهد بود.Stopping nginx-compose-project_nginx-compose-project-1_1 ... doneStopping nginx-compose-project_nginx-compose-project-2_1 ... doneRemoving nginx-compose-project_nginx-compose-project-1_1 ... doneRemoving nginx-compose-project_nginx-compose-project-2_1 ... doneRemoving network nginx-compose-project_defaultبعضی مواقع نیاز هست بعضی از سرویس های کامپوز فایل را بیش از یک بار اجرا کنیم برای این کار کافیست حین تعریف پورت، فقط پورتی که از داخل کانتینر به بیرون تعریف شده را بنویسیم. مانندversion: '2'services: nginx-compose-project-1: image: nginx:latest ports: - "8080:80" nginx-compose-project-2: image: nginx:latest ports: - "8081:80" nginx-compose-project-3: image: nginx:latest ports: - "80"حال برای اجرای دو کانتینر از “nginx-compose-project-3” مانند دستور زیر عمل میکنیم.docker-compose up --scale nginx-compose-project-3=2 -dبعد از اجرا دستور بالا، با کمک دستور “docker-compose ps” لیستی شبیه زیر خواهید دید.Name Command State Ports------------------------------------------------------------------------------------------------------------nginx-compose-project-proxy_nginx-compose-project-1_1 nginx -g daemon off; Up 0.0.0.0:8080->80/tcpnginx-compose-project-proxy_nginx-compose-project-2_1 nginx -g daemon off; Up 0.0.0.0:8081->80/tcpnginx-compose-project-proxy_nginx-compose-project-3_1 nginx -g daemon off; Up 0.0.0.0:32769->80/tcpnginx-compose-project-proxy_nginx-compose-project-3_2 nginx -g daemon off; Up 0.0.0.0:32768->80/tcpهمانطور که میبیند در لیست بالا از سرویس “nginx-compose-project-3” دو نمونه روی پا هست و از پورت های 32769 و 32768 قابل دسترس از براوزر میباشد.نکته:داکر کامپوز در ویندوز و مک به صورت اتوماتیک نصب میشود ولی اگر در لینوکس کار میکنید احتمالا به صورت دستی باید نصب بکنید. نحوه نصب را از این قسمت میتوانید مطالعه بکنید.طی این هفته ویدیو این آموزش در یوتیوب بنده در دسترس خواهد بود. موفق باشید