docker

پلتفرم Docker

(Docker Platform)

🎯 توضیحات و نکات تکمیلی

فهرست عناوین:

مشخص کردن مسیر Dockerfile در هنگام بیلد

گاهی اوقات ممکن است بخواهید چندین پروژه که در یکmonorepoقرار دارند را باDockerfileهای مختلفی دیپلوی کنید یا از نام و مسیر دلخواه برایDockerfileتان استفاده کنید. برای این کار می‌توانید از یکی از دو روش زیر استفاده کنید:

۱) یک فایل با نامliara.jsonدر ریشه‌ پروژه‌تان ایجاد کرده و نمونه قطعه‌کد زیر را درون این فایل قرار بدید:

{
  "platform": "docker",
  "build": {
     "dockerfile": "path/to/Dockerfile"
  }
}

۲) در دستورliara deployمسیرDockerfileرا با پارامتر--dockerfileمشخص کنید.

liara deploy --platform=docker --dockerfile="path/to/Dockerfile"

مشخص کردن وضعیت Cache در هنگام بیلد

می‌توانید مشخص کنید که در هنگام فرآیند بیلد از کش استفاده شود یا خیر. برای این کار می‌توانید از یکی از دو روش زیر استفاده کنید:

۱) یک فایل با نامliara.jsonدر ریشه‌ پروژه‌تان ایجاد کرده و نمونه قطعه‌کد زیر را درون این فایل قرار بدید:

{
  "platform": "docker",
  "build": {
    "cache": false // default true
  }
}

۲) در دستورliara deployوضعیتCacheرا با پارامتر--cacheمشخص کنید.

liara deploy --platform=docker --cache=false

شخصی سازی ARG در هنگام بیلد

شما می‌توانید در هنگام بیلد ARG‌های‌تان را با استفاده از یکی از دو روش‌های زیر شخصی سازی کنید:

۱) یک فایل با نامliara.jsonدر ریشه‌ پروژه‌تان ایجاد کرده و نمونه قطعه‌کد زیر را درون این فایل قرار بدید:

{
  "platform": "docker",
  "build": {
    "args": ["APP_VERSION=2.0.0"]
  }
}

۲) در دستورliara deployبا پارامترbuild-argARG‌های‌تان را شخصی سازی کنید.

liara deploy --platform=docker --build-arg="APP_VERSION=2.0.0"

تغییر ENTRYPOINT

برای تغییر ENTRYPOINT ایمیجی که قصد اجرای آن را دارید، می‌توانید از یکی از دو روش زیر استفاده کنید:

۱) یک فایل با نامliara.jsonدر ریشه‌ پروژه‌تان ایجاد کرده و نمونه قطعه‌کد زیر را درون این فایل قرار بدید:

{
  "platform": "docker",
  "args": [
    "sh",
    "-c",
    "sleep 10 && /entrypoint.sh run"
  ]
}

۲) در دستورliara deployدستورات‌تان را با پارامتر--argsمشخص کنید.

liara deploy --platform=docker --args="sh -c sleep 10 && /entrypoint.sh run"

پیکربندی Supercronic

گاهی اوقات ممکن است بخواهید کار خاصی در زمان خاص و یا به‌صورت دوره‌ای اجرا شود. برای این کار در پلتفرم Docker می‌توانید از Supercronic استفاده کنید.

برای استفاده از Supercronic در لیارا تنها کافیست قطعه‌کد زیر را به Dockerfile پروژه‌ی خود اضافه کنید:

COPY --from=liaracloud/supercronic:v0.1.11 \
     /usr/local/bin/supercronic /usr/local/bin/supercronic

همچنین باید فایل crontab را در مسیر اصلی پروژه‌ی خود ایجاد کرده و به‌شکل زیر Jobهای مورد نظر خود را اضافه کنید:

* * * * * cd $ROOT && echo $(date) >> /tmp/time.txt

درنهایت باید یک فایل با نام entrypoint.sh در مسیر اصلی پروژه ایجاد کنید و به‌شکل زیر supercronic و برنامه‌تان را اجرا کنید:

#!/bin/bash

supercronic /usr/src/app/crontab &

daphne -b 0.0.0.0 -p 80 routeprinter:app

محدودیت‌ها

استفاده از VOLUMEدر Dockerfile

فایل سیستم برنامه‌های لیارا Read-Only است و شما نمی‌توانید از دستورVOLUMEدر Dockerfile استفاده کنید و به‌جای آن باید از قابلیت «دیسک‌ها» استفاده کنید. لازم است که این عبارت را قبل از استقرار حذف کنید. چنانچه از Image‌های DockerHub هم استفاده کنید، باید نظیر به‌نظیرVOLUMEهایی که در آن Image تعریف شده، دیسک بسازید و دیسک را در همان مسیر mount کنید.
برای مثال، Dockerfile زیر را در نظر بگیرید:

FROM ubuntu

RUN echo hello

VOLUME /path/to/data
این فایل برای این‌که بتواند در لیارا مستقر شود، باید خطی که در آنVOLUMEتعریف شده، حذف شود.

استفاده از EXPOSEدر Dockerfile

لیارا از این قسمت از Dockerfile شما صرف‌نظر می‌کند. شما باید حتما پورتی که مدنظرتان است را با پارامتر--portتنظیم کنید. تنها به‌پورت‌های HTTP می‌توانید از خارج از شبکه‌ی لیارا متصل شوید. برای مثال اگر یک سرویس مانند RabbitMQ را مستقر کنید، به‌این سرویس تنها در شبکه‌ی خصوصی لیارا دسترسی خواهید داشت.

;