
پلتفرم 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"
توضیحات و نکات تکمیلی
پیکربندی 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تعریف شده، حذف شود.