
پلتفرم Docker
(Docker Platform)🎯 توضیحات و نکات تکمیلی
فهرست عناوین:
- مشخص کردن مسیر Dockerfile در هنگام بیلد
- مشخص کردن وضعیت Cache در هنگام بیلد
- شخصی سازی ARG در هنگام بیلد
- تغییر ENTRYPOINT
- پیکربندی Supercronic
- محدودیتها
مشخص کردن مسیر 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تعریف شده، حذف شود.