قوانین ادغام تنظیمات چند فایل برای ساخت فایل Compose نهایی

قوانین ادغام تنظیمات چند فایل برای ساخت فایل Compose نهایی

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

جهت یادآوری، در بخش استفاده از چند فایل برای ساخت فایل Compose نهایی گفتیم که فایل اصلی برنامه مان همان docker-compose.yml است و فایل دوم همان فایلی است که با نام override و یا هرنام دلخواه دیگری ایجاد می کنیم. Docker Compose ابتدا فایل اصلی (docker-compose.yml) را می خواند و سپس به سراغ فایل های دیگری می رود که در پروژه قرار داده و معرفی کرده ایم.

قانون اول

برچسب های دارای یک مقدار

برای برچسب هایی مانند command ،image یا mem_limit که یک مقدار را دریافت می کنند، مقدار جدید جایگزین مقدار قبلی می شود. به مثال زیر دقت کنید.

فایل اصلی:

services:
  myservice:
    # ...
    command: python app.py

فایل override:

services:
  myservice:
    # ...
    command: python otherapp.py

نتیجه ی نهایی:

services:
  myservice:
    # ...
    command: python otherapp.py

قانون دوم

برچسب های دارای چند مقدار

همانطور که به یاد دارید برخی از برچسب ها مانند  dns_search ،dns ،external_links ،expose ،ports و tmpfs چند مقدار را قبول می کردند. در این شرایط Docker Compose تمامی این مقادیر را به هم متصل می کند. در مثال زیر می توانید این موضوع را مشاهده کنید.

فایل اصلی:

services:
  myservice:
    # ...
    expose:
      - "3000"

فایل override:

services:
  myservice:
    # ...
    expose:
      - "4000"
      - "5000"

نتیجه ی نهایی:

services:
  myservice:
    # ...
    expose:
      - "3000"
      - "4000"
      - "5000"

قانون سوم

برچسب های environment، labels، volumes و devices

در مورد برچسب هایی مانند volumes ،labels ،environment و devices قاعده ای که Docker Compose برای ادغام دارد، عبارت است از، ترکیب موارد بیان شده با اولویت قرار دادن فایل دوم است. برای درک بهتر این موضوع به مثال زیر دقت کنید:

فایل اصلی:

services:
  myservice:
    # ...
    environment:
      - FOO=original
      - BAR=original

فایل override:

services:
  myservice:
    # ...
    environment:
      - BAR=local
      - BAZ=local

نتیجه ی نهایی:

services:
  myservice:
    # ...
    environment:
      - FOO=original
      - BAR=local
      - BAZ=local
دوره در حال تکمیل است ... rocket
کاربر میهمان

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