Docker Compose، ابزار خط فرمانی است که به شما امکان می‌دهد، برنامه‌هایی با چندین container Docker را تعریف و تنظیم کنید. این برنامه، از یک فایل YAML به منظور پیکربندی سرویس‌ها، شبکه‌ها و volumeهای برنامه استفاده می‌نماید.

 

با استفاده از Compose، شما می‌توانید یک محیط برنامه قابل حمل تعریف کنید؛ بطوریکه روی هر سیستمی قابل اجرا باشد. از آنجایی که محیط‌های Compose از یکدیگر جدا هستند، شما می‌توانید چندین نسخه از یک محیط یکسان را روی یک میزبان اجرا نمایید.

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

در این مقاله، نحوه نصب آخرین نسخه Docker Compose در اوبونتو 20.04 توضیح داده شده است. علاوه بر این، شرحی از مفاهیم و دستورات اساسی در  Docker Compose ارائه شده است.

قبل از دنبال کردن این آموزش، مطمئن شوید که Docker را روی دستگاه اوبونتوی خود نصب کرده‌اید.

 

این مطلب نیز ممکن است برای شما مفید باشد: رفع خطای "Permission Denied" پس از نصب Docker در اوبونتو

 

نصب Docker Compos در اوبونتو

Docker Compose، یک فایل باینری است و بسیار آسان نصب می‌شود. در ابتدا، فایل نصب را در یک دایرکتوری موجود در PATH سیستم بارگیری کرده و آن را قابل اجرا می‌نماییم.

هرچند بسته Docker Compose در مخازن رسمی اوبونتو 20.04 موجود است؛ ولیکن در اغلب اوقات آخرین نسخه نیست.

در اینجا، نسخه پایدار Docker Compose 1.25.5 استفاده می‌شود. دقت کنید که قبل از بارگیری فایل Compose binary، به صفحه انتشار مخزن Compose در GitHub بروید و بررسی کنید که نسخه جدیدی برای بارگیری وجود دارد یا خیر.

برای بارگیری فایل Compose در دایرکتوری /usr/local/bin از curl استفاده نمایید:

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

پس از اتمام بارگیری، مجوزهای اجرایی را روی فایل اعمال کنید:

sudo chmod +x /usr/local/bin/docker-compose

 

به منظور بررسی موفقیت آمیز بودن نصب، دستور زیر برای مشاهده نسخه Compose اجرا نمایید:

docker-compose --version

خروجی دستور، چیزی شبیه به این خواهد بود:

Output:
docker-compose version 1.25.5, build b02f1306

اکنون، Docker Compose بر روی دستگاه اوبونتوی شما نصب شده است و شما می‌توانید از آن استفاده کنید.

 

شروع کار با Docker Composer

در این بخش، ما از Docker Compose برای ساخت یک برنامه وردپرس دارای چندین container استفاده خواهیم کرد.

اولین قدم، ایجاد یک دایرکتوری پروژه است:

mkdir my_app
cd my_app

پس از آن، ویرایشگر متن خود را باز کرده و فایلی به نام docker-compose.yml داخل دایرکتوری پروژه ایجاد نمایید:

nano docker-compose.yml

سپس محتوای زیر را جایگذاری کنید:

                     docker-compose.yml

version: '3'

services:
  db:
    image: mysql:5.7
    restart: always
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress

  wordpress:
    image: wordpress
    restart: always
    volumes:
      - ./wp_data:/var/www/html
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
    depends_on:
       - db

volumes:
    db_data:
    wp_data:

 

ساختار فایل docker-compose.yml به شرح زیر است:

خط اول فایل، نسخه فایل compose را مشخص می‌کند. چندین نسخه مختلف از قالب فایل Compose با پشتیبانی از نسخه‌های خاص Docker وجود دارد.

در مرحله بعد، باید سرویس‌ها، volumeها و شبکه‌ها را تعریف نمایید.

در این مثال، از سرویس‌ها، db و وردپرس استفاده می‌کنیم. هر سرویس یک image را اجرا می‌نماید و هنگام اجرای docker-compose، یک container جداگانه ایجاد می‌کند.

سرویس‌ها می‌توانند از imageای که در DockerHub موجود است یا imageهای ساخته شده از Dockerfile استفاده کنند. بخش سرویس شامل کلیدهایی است که پورت‌های درگیر، volumها، متغیرهای محیط، وابستگی‌ها و سایر دستورات Docker را مشخص می‌نماید.

با استفاده از دستور زیر، از دایرکتوری پروژه، برنامه WordPress را راه‌اندازی کنید:

docker-compose up

Compose، آن imageها را دریافت کرده، Containerها را راه‌اندازی می‌نماید و دایرکتوری wp_data را ایجاد می‌کند.

اکنون آدرس http://0.0.0.0:8080/ را در مرورگر خود وارد نمایید، صفحه وردپرس را مشاهده خواهید کرد. در این مرحله، برنامه وردپرس در حال اجرا است و شما می‌توانید روی قالب یا افزونه خود کار کنید.

به منظور متوقف کردن Compose، کافیست CTRL + C را فشار دهید.

 

این مطلب نیز ممکن است برای شما مفید باشد: ایجاد و اجرای Docker Image با استفاده از Dockerfile

 

با ارسال گزینه -d می‌توانید، Compose را در یک حالت مستقل و جداگانه راه اندازید:

docker-compose up -d

برای بررسی سرویس‌های در حال اجرا از گزینه ps استفاده نمایید:

docker-compose ps
Output:
       Name                     Command               State          Ports        
----------------------------------------------------------------------------------
my_app_db_1          docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp 
my_app_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8080->80/tcp

وقتی Compose در یک حالت جداگانه در حال اجرا است، به منظور متوقف کردن سرویس‌های Docker Compose کافیست دستور زیر را اجرا کنید:

docker-compose stop

به منظور متوقف کردن و حذف Containerها و شبکه‌های برنامه، از گزینه down استفاده نمایید:

docker-compose down

 

حذف Docker Compose

به منظور حذف Docker Compose می‌توانید از دستور زیر استفاده کنید:

sudo rm /usr/local/bin/docker-compose

 

 

 

منبع:

linuxize