ایجاد و نوشتن اولین فایل Compose

ایجاد و نوشتن اولین فایل Compose

بعد از اینکه با موفقیت Docker Compose را نصب کردیم. حالا وقت آن رسیده که برگردیم سراغ برنامه ای که داشتیم و اگر خاطرتان باشد، برای برنامه مان چند کانتینر نیاز داشتیم. در ادامه ی آموزش ها قصد داریم با استفاده از فایل Compose، همان برنامه ای که داشتیم را با شرایط حرفه ای تر و البته اصولی تر Dockerize کنیم. در این قسمت کانتینر اصلی برنامه را به فایل Compose اضافه میکنیم و در بخش بعدی دیتابیس آن را اضافه میکنیم تا برنامه به صورت کامل Dockerize شود.

Dockerizing به چه معناست؟

حالا که در مسیر حرفه ای تر شدن در داکر، مفاهیم و کاربردهای آن هستیم، شاید خوب باشد که با اصطلاح Dockerizing هم آشنا بشویم. این اصطلاح را که شاید از زبان حرفه ای ها زیاد بشنویم و یا کارفرمای آگاهی از ما بخواهد برنامه ی توسعه داده شده را برایش Dockerize کنیم؛ این اصطلاح به معنای فرآیند بسته بندی، استقرار و اجرای برنامه ها با استفاده از کانتینرهای Docker است.

فایل Compose را ایجاد کنید

برای استفاده از Compose نیاز است در ابتدا فایلی را در پوشه ی اصلی برنامه با نام docker-compose.yml ایجاد کنیم.

فایل Compose را با نوشتن نسخه ی آن شروع می کنیم.

version: "3.7"

در بیشتر مواقع بهتر است از آخرین نسخه ی پشتیبانی شده استفاده کنیم. در ادامه ماتریس سازگاری Docker و Compose را مشاهده می کنید.

نسخه داکر Engineقالب فایل Compose
+19.03.0مشخصات Compose
+19.03.03.8
+18.06.03.7
+18.02.03.6
+17.12.03.5
+17.09.03.4
+17.06.03.3
+17.04.03.2
+1.13.13.1
+1.13.03.0
+17.12.02.4
+17.06.02.3
+1.13.02.2
+1.12.02.1
+1.10.02.0

در ادامه، باید لیست سرویس هایی (همان کانتینرهایی) را که می خواهیم به عنوان بخشی از برنامه مان اجرا شود را معرفی کنیم. در ادامه ی این آموزش، قصد داریم هر یک از سرویس های مورد استفاده در برنامه مان را به فایل Compose منتقل کنیم.

version: "3.7"
services:

تعریف سرویس (کانتینر) برنامه

اگر یادتان باشد، دستور زیر، همان دستوری هست که برای تعریف سرویس برنامه مورد استفاده قرار داده بودیم.

docker run -dp 3000:3000 \
  -w /app -v "$(pwd):/app" \
  --network todo-app \
  -e MYSQL_HOST=mysql \
  -e MYSQL_USER=root \
  -e MYSQL_PASSWORD=secret \
  -e MYSQL_DB=todos \
  node:12-alpine \
  sh -c "yarn install && yarn run dev"

که در صورت استفاده از PowerShell باید دستور زیر را وارد میکردیم.

PS> docker run -dp 3000:3000 `
  -w /app -v "$(pwd):/app" `
  --network todo-app `
  -e MYSQL_HOST=mysql `
  -e MYSQL_USER=root `
  -e MYSQL_PASSWORD=secret `
  -e MYSQL_DB=todos `
  node:12-alpine `
  sh -c "yarn install && yarn run dev"

حالا در ادامه به صورت گام به گام این دستورات را به فایل Compose منتقل خواهیم کرد.

1.  ابتدا لازم است سرویس و Image ای که برای کانتینر می خواهیم را معرفی کنیم. ما هر نامی که بخواهیم، می توانیم برای سرویس مان انتخاب کنیم. این نام به صورت خودکار به Alias (نام مستعار) شبکه هم داده می شود، که برای تعریف سرویس MySQL مفید خواهد بود.

version: "3.7"
 services:
   app:
     image: node:12-alpine

ما برای نام سرویس از "app" استفاده کردیم و در مقابل برچسب image هم نام image مورد انتظارمان برای این کانتینر یعنی node:12-alpine را نوشتیم.

   2. برای برچسب هایی که می نویسیم الزامی وجود ندارد که یک ترتیب و نظم خاص را دنبال کنیم. ولی الگوی هایی هم وجود دارد که بین کاربران داکر مرسوم شده است. مثلا به طور معمول، بعد از برچسب image، معمول است که برچسب command نوشته شود. پس در ادامه، فایل ما به این صورت تغییر می کند.

version: "3.7"
 services:
   app:
     image: node:12-alpine
     command: sh -c "yarn install && yarn run dev"

    3. در این مرحله بعدی باید p 3000:3000- را به فایل Compose مان اضافه کنیم. برای این کار از برچسبی با عنوان ports استفاده می کنیم.

version: "3.7"
 services:
   app:
     image: node:12-alpine
     command: sh -c "yarn install && yarn run dev"
     ports:
       - 3000:3000

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

   4. در ادامه، باید مسیر اجرایی برنامه یا همان Working Directory را که با دستور w /app- مشخص کرده بودیم به فایل Compose منتقل کنیم. در این مرحله به طور همزمان قصد داریم حافظه یا Volume برنامه را هم    که با "v "$(pwd):/app- معرفی کرده بودیم، به فایل Compose منتقل کنیم.

   این دو مقدار مهم را با برچسب های working_dir و volumes در فایل Compose معرفی می کنیم. توجه داشته باشید که volumes هم حالت کوتاه و بلند دارد و نکات حرفه ای تری برای آن وجود دارد که در آخر همین فصل به آن ها خواهیم پرداخت.

version: "3.7"
 services:
   app:
     image: node:12-alpine
     command: sh -c "yarn install && yarn run dev"
     ports:
       - 3000:3000
     working_dir: /app
     volumes:
       - ./:/app

   5. در نهایت، باید متغیرهای محیطی ای که برای برنامه مان تعریف کرده بودیم را به فایل Compose منتقل کنیم. برچسب مورد نیاز برای این مقادیر environment است.

version: "3.7"
 services:
   app:
     image: node:12-alpine
     command: sh -c "yarn install && yarn run dev"
     ports:
       - 3000:3000
     working_dir: /app
     volumes:
       - ./:/app
     environment:
       MYSQL_HOST: mysql
       MYSQL_USER: root
       MYSQL_PASSWORD: secret
       MYSQL_DB: todos

تا اینجا توانستیم دستوری که برای ایجاد کانتینر مربوط به برنامه مان داشتیم را به فایل Compose منتقل کنیم. در قسمت بعدی، به همین صورت گام به گام، فایل Compose مربوط به سرویس MySQL را راه اندازی می کنیم و در نهایت برنامه مان را اجرا می کنیم. با ما همراه باشید.

inline-quiz
2 سوال بدون زمان

آزمون

سوالات این آزمون برگرفته از متن اصلی آموزش است.

دوره در حال تکمیل است ... rocket
کاربر میهمان

دوست گرامی شما به عنوان کاربر میهمان در سایت سکان آکادمی حضور دارید لطفاً برای ارسال دیدگاه ابتدا وارد حساب خود شوید