استقرار با Docker
Dockerfile، ایمیج آماده، Docker Compose و انتخاب نسخه زبان.
هر چیزی که در Docker اجرا میشود در گره اپ هم اجرا میشود. سه راه دارید:
۱. Dockerfile داخل پروژه
اگر در ریشه پروژه (یا پوشه ریشهای که تعیین کردهاید) Dockerfile باشد، گره اپ همان را بیلد میکند و تشخیص خودکار کنار گذاشته میشود. مسیر دیگری را در تب «بیلد و اجرا» تنظیم کنید (مثلاً docker/prod.Dockerfile). آرگومانهای بیلد (ARG) را هم همانجا بدهید.
FROM node:22-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
ENV PORT=3000
CMD ["node", "server.js"]- اپ باید روی
0.0.0.0و پورتی که در تنظیمات اپ آمده گوش دهد؛ متغیرPORTهمیشه مقدار آن را دارد. - بستههای npm، PyPI و Go و ایمیجهای پایه هنگام بیلد از میرور گره گرفته میشوند؛
ARG NPM_CONFIG_REGISTRYوARG PIP_INDEX_URLرا در Dockerfile بنویسید تا از آن استفاده شود. .dockerignoreرعایت میشود؛node_modulesو.gitرا در آن بگذارید.
۲. ایمیج آماده از رجیستری
در «اپ جدید» منبع «ایمیج Docker» را انتخاب کنید و نام کامل ایمیج را بنویسید، مثل ghcr.io/acme/api:1.4.2. ایمیج باید عمومی باشد. برای انتشار نسخه جدید:
gereh deploy --app my-api --image ghcr.io/acme/api:1.4.3برای دهها نرمافزار متنباز (n8n، Nextcloud، Keycloak، Metabase…) از اپهای آماده استفاده کنید؛ دیسک، پایگاه داده و رمزها خودکار ساخته میشوند و نسخه را خودتان انتخاب میکنید.
۳. Docker Compose
ZIP پروژهای که docker-compose.yml دارد را بارگذاری کنید (حداکثر ۸ سرویس). سرویس عمومی اولین سرویس دارای ports است یا برچسب gereh.public: "true" دارد. volumes و env_file نادیده گرفته میشوند. اگر سرویسهای postgres، mysql یا redis دارید، بهتر است با قالب ترکیبی آنها را به پایگاه داده مدیریتشده با پشتیبان روزانه تبدیل کنید؛ ویرایشگر قالب، فایل compose را خودکار تبدیل میکند.
نسخه زبان بدون Dockerfile
بدون Dockerfile هم نسخه زبان را انتخاب کنید: Node.js از 8 تا 24، PHP از 7.2 تا 8.4، Python از 3.7 تا 3.13، .NET از 2.1 تا 10، Go از 1.21 تا 1.25 و… نسخههایی که Nixpacks پشتیبانی میکند با همان ساخته میشوند و بقیه از ایمیج رسمی زبان (مثل node:8-slim یا mcr.microsoft.com/dotnet/sdk:2.1) با Dockerfile تولیدشده. نسخه در آرگومان بیلد GEREH_RUNTIME_VERSION نگه داشته میشود و از تب «بیلد و اجرا» قابل تغییر است.
اشکالزدایی
gereh logs --follow # لاگ زنده همه نمونهها
gereh shell # اجرای دستور در نمونه در حال اجرا
gereh deploy --no-cache # بیلد دوباره بدون کش