نگاهی دقیق به برچسب ports در services

نگاهی دقیق به برچسب ports در services

برای تعریف برچسب ports همانطور که قبلا هم اشاره کردیم، دو حالت کوتاه و بلند داریم. در ادامه هر دوی این حالت ها را باهم بررسی می کنیم.

برچسب ports وظیفه دارد، Port ای از ماشین میزبان (Host) را به Port ای از کانتینر تولید شده متصل کند. برای اینکه بهتر با این بخش همراه شویم، ابتدا به برچسب ports استفاده شده در فایل Compose ای که در بخش های قبلی ساختیم، یک نگاهی بیاندازیم.

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

حالت کوتاه تعریف برچسب ports در فایل Compose

در حالتی که می خواهیم بخش ports را به صورت کوتاه شده تعریف کنیم، سه راه پیش روی مان هست:

   1- هردو Port ماشین میزبان و کانتینر را تعریف کنیم :

ports:
  - "3000:8000"

   2- فقط Port مربوط به کانتینر را تعریف کنیم (در این حالت، به صورت خودکار یک Port موقتی برای Host انتخاب می شود.)

ports:
  - "3000"

   3- یک آدرس IP برای اتصال به هر دو Port میزبان و کانتینر، تعریف کنیم.

ports:
  - "127.0.0.1:8001:8001"

💡 نکته: در این الگو(IPADDR:HOSTPORT:CONTAINERPORT) اگر HOSTPORT خالی باشد، به صورت خودکار یک Port موقتی به Host اختصاص داده می شود. مثلا: 127.0.0.1::80

💡 نکته: وقتی از الگوی HOST:CONTAINER برای تعریف Port استفاده می کنید و Port ای که برای کانتینر انتخاب کرده اید کوچکتر از 60 باشد، به خطا می خورید. دلیل این خطا این است که، YAML اعداد را براساس الگوی xx:yy و با مقدار پایه ی 60، می خواند. به همین دلیل، پیشنهاد می کنم همیشه Port ها را به عنوان رشته معرفی کنید. یعنی مقداری که می خواهید برای Port در نظر بگیرید را به صورت “xx:yy” بنویسید.

برای اینکه سه حالت بالا و نکته های گفته شده را بهتر متوجه شوید و با حالت های مختلف تعریف ports آشنا شوید، مثال های  زیر را بررسی کنید.

ports:
 - "3000"
  - "3000-3005"
  - "8000:8000"
  - "9090-9091:8080-8081"
  - "49100:22"
  - "127.0.0.1:8001:8001"
  - "127.0.0.1:5000-5010:5000-5010"
  - "127.0.0.1::5000"
  - "6060:6060/udp"
  - "12400-12500:1240"

حالت بلند تعریف برچسب ports در فایل Compose

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

  • target: مقدار Port کانتینر است.
  • published: مقدار Port ای هست که از بیرون قابل مشاهده است. همان HOSTPORT در حالت قبل است.
  • protocol: پروتکلی که این Port برای ارتباط از آن بهره می برد. (مثلا tcp یا udp)
  • mode: در این بخش هم می توانیم از گزینه های host و ingress استفاده کنیم. حالت host، برای ارائه ی یک Port میزبان برای هر کدام از node ها استفاده می شود و حالت ingress، زمانی که ترافیک زیادی داریم و قصد داریم از load balancing استفاده کنیم به کار می آید.
ports:
  - target: 80
    published: 8080
    protocol: tcp
    mode: host

نحوه ی نوشتن طولانی برچسب Port از ورژن 3.2 اضافه شده است و قبل از آن قابل استفاده نبوده است.

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

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