نحوه Dockerize و استقرار Fastify APIها

Summarize this content to 400 words in Persian Lang
اگر فقط برای کپی و چسباندن اینجا هستید، در اینجا آخرین Dockerfile است که تصویری را برای برنامه Fastify شما تولید می کند:
FROM node:20-alpine
WORKDIR /app
COPY package* ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [“node”, “index.js”]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
و در اینجا فایل .dockerignore است که باید استفاده کنید:
node_modules
npm-debug.log
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
برای ساخت و اجرای تصویر از این دستورات استفاده کنید:
docker build -t fastify-app .
docker run -p 3000:3000 fastify-app
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اینجا فقط برای کپی و پیست نیست؟ بیایید به آنچه در Dockerfile اتفاق می افتد بپردازیم!
راه اندازی
برای این آموزش، من فرض می کنم که شما یک پروژه Fastify را راه اندازی کرده اید. Fastify یک چارچوب وب است که به شدت بر ارائه بهترین تجربه توسعه دهنده با کمترین هزینه و معماری افزونه قدرتمند متمرکز است. اگر تنظیمات متفاوتی دارید، ممکن است لازم باشد Dockerfile را بر این اساس تنظیم کنید.
به طور معمول، شما می دوید npm install و سپس node index.js برای کار محلی برای استقرار، ما از یک رویکرد مشابه اما در یک ظرف Docker استفاده خواهیم کرد. بیایید به جزئیات Dockerfile بپردازیم.
Dockerfile
FROM node:20-alpine
LABEL maintainer=”jonas@sliplane.io”
WORKDIR /app
COPY package* ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [“node”, “index.js”]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
پس اینجا چه خبر است؟
تصویر پایه:
از Node.js 20 در Alpine استفاده می کند و یک تصویر پایه سبک را ارائه می دهد.
دایرکتوری کاری:
راه اندازی می کند /app به عنوان دایرکتوری کاری برای دستورالعمل های بعدی.
نصب وابستگی:
کپی ها package.json و package-lock.json (در صورت وجود) به دایرکتوری کاری.
اجرا می شود npm install برای نصب وابستگی ها
این باعث می شود که ذخیره سازی در حافظه پنهان ممکن شود!
کد برنامه:
بقیه کد برنامه را در ظرف کپی می کند.
نوردهی بندر:
پورت 3000 را که ما برای برنامه Fastify خود استفاده خواهیم کرد، آشکار می کند.
دستور شروع:
دستور اجرای برنامه را با استفاده از آن مشخص می کند node index.js.
این رویکرد برای برنامههای کاربردی Fastify که معمولاً نیازی به مرحله ساخت جداگانه ندارند، ساده و کارآمد است. اگر شما این کار را می کند، به سادگی یک را اضافه کنید RUN npm build در بین همچنین مطمئن شوید که آن را اضافه کنید .dockerignore فایل برای نادیده گرفتن node_modules گزارش های اشکال زدایی پوشه و npm. این کار باعث تسریع روند ساخت و کاهش حجم تصویر می شود.
فایل جاوا اسکریپت Minimal Fastify
در اینجا یک حداقل است index.js فایل برای اجرای Fastify با تنظیم میزبان روی 0.0.0.0:
const fastify = require(“fastify”)({ logger: true });
fastify.get(“/”, async (request, reply) => {
return { hello: “world” };
});
const start = async () => {
try {
await fastify.listen({ port: 3000, host: “0.0.0.0” });
} catch (err) {
fastify.log.error(err);
process.exit(1);
}
};
start();
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
تنظیم میزبان به 0.0.0.0 در Docker ضروری است زیرا به برنامه اجازه می دهد اتصالات را از هر آدرس IPv4 بپذیرد. اگر این را تنظیم نکنید، برنامه فقط از داخل کانتینر قابل دسترسی خواهد بود، نه از دستگاه میزبان یا شبکه های خارجی.
استقرار
می توانید این ظرف Docker را در هر ارائه دهنده ابری که از Docker پشتیبانی می کند مستقر کنید. به عنوان مثال، می توانید از پلتفرم هایی مانند Heroku، DigitalOcean یا AWS ECS استفاده کنید.
از آنجا که من یکی از بنیانگذاران Sliplane هستم، به شما نشان خواهم داد که چگونه آن را در آنجا مستقر کنید. پس از ثبت نام، می توانید با انتخاب مخزن Github خود یک سرویس جدید ایجاد کنید. سپس فقط تنظیمات پیش فرض را نگه دارید و روی deploy کلیک کنید.
پس از استقرار، برنامه Fastify شما در زیر دامنه sliplane.app در دسترس خواهد بود، معمولاً فقط نام سرویس شما است. همچنین میتوانید گزارشهای برنامه خود را ببینید، معیارهایی مانند میزان مصرف پردازنده و حافظه، اضافه کردن فضای ذخیرهسازی مداوم و موارد دیگر را ببینید. هر زمان که به مخزن خود فشار بیاورید، Sliplane به طور خودکار برنامه شما را مستقر می کند.
اگر می خواهید Sliplane را امتحان کنید، 2 روز اول رایگان است! آن را امتحان کنید و نظر خود را به من بگویید 🙂
Fastify را در 2 دقیقه پیاده کنید 🚀
مراحل بعدی
آیا چیز دیگری هست که بخواهید بدانید؟ آیا برای نصب برنامه Fastify به کمک نیاز دارید؟ آیا برای استقرار آن در یک پلتفرم خاص به کمک نیاز دارید؟ با خیال راحت تماس بگیرید! می توانید من را در X پیدا کنید یا فقط در اینجا در این وبلاگ نظر دهید.
به سلامتی،جوناس
اگر فقط برای کپی و چسباندن اینجا هستید، در اینجا آخرین Dockerfile است که تصویری را برای برنامه Fastify شما تولید می کند:
FROM node:20-alpine
WORKDIR /app
COPY package* ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
و در اینجا فایل .dockerignore است که باید استفاده کنید:
node_modules
npm-debug.log
برای ساخت و اجرای تصویر از این دستورات استفاده کنید:
docker build -t fastify-app .
docker run -p 3000:3000 fastify-app
اینجا فقط برای کپی و پیست نیست؟ بیایید به آنچه در Dockerfile اتفاق می افتد بپردازیم!
راه اندازی
برای این آموزش، من فرض می کنم که شما یک پروژه Fastify را راه اندازی کرده اید. Fastify یک چارچوب وب است که به شدت بر ارائه بهترین تجربه توسعه دهنده با کمترین هزینه و معماری افزونه قدرتمند متمرکز است. اگر تنظیمات متفاوتی دارید، ممکن است لازم باشد Dockerfile را بر این اساس تنظیم کنید.
به طور معمول، شما می دوید npm install
و سپس node index.js
برای کار محلی برای استقرار، ما از یک رویکرد مشابه اما در یک ظرف Docker استفاده خواهیم کرد. بیایید به جزئیات Dockerfile بپردازیم.
Dockerfile
FROM node:20-alpine
LABEL maintainer="jonas@sliplane.io"
WORKDIR /app
COPY package* ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
پس اینجا چه خبر است؟
-
تصویر پایه:
- از Node.js 20 در Alpine استفاده می کند و یک تصویر پایه سبک را ارائه می دهد.
-
دایرکتوری کاری:
- راه اندازی می کند
/app
به عنوان دایرکتوری کاری برای دستورالعمل های بعدی.
- راه اندازی می کند
-
نصب وابستگی:
- کپی ها
package.json
وpackage-lock.json
(در صورت وجود) به دایرکتوری کاری. - اجرا می شود
npm install
برای نصب وابستگی ها - این باعث می شود که ذخیره سازی در حافظه پنهان ممکن شود!
- کپی ها
-
کد برنامه:
- بقیه کد برنامه را در ظرف کپی می کند.
-
نوردهی بندر:
- پورت 3000 را که ما برای برنامه Fastify خود استفاده خواهیم کرد، آشکار می کند.
-
دستور شروع:
- دستور اجرای برنامه را با استفاده از آن مشخص می کند
node index.js
.
- دستور اجرای برنامه را با استفاده از آن مشخص می کند
این رویکرد برای برنامههای کاربردی Fastify که معمولاً نیازی به مرحله ساخت جداگانه ندارند، ساده و کارآمد است. اگر شما این کار را می کند، به سادگی یک را اضافه کنید RUN npm build
در بین همچنین مطمئن شوید که آن را اضافه کنید .dockerignore
فایل برای نادیده گرفتن node_modules
گزارش های اشکال زدایی پوشه و npm. این کار باعث تسریع روند ساخت و کاهش حجم تصویر می شود.
فایل جاوا اسکریپت Minimal Fastify
در اینجا یک حداقل است index.js
فایل برای اجرای Fastify با تنظیم میزبان روی 0.0.0.0
:
const fastify = require("fastify")({ logger: true });
fastify.get("/", async (request, reply) => {
return { hello: "world" };
});
const start = async () => {
try {
await fastify.listen({ port: 3000, host: "0.0.0.0" });
} catch (err) {
fastify.log.error(err);
process.exit(1);
}
};
start();
تنظیم میزبان به 0.0.0.0
در Docker ضروری است زیرا به برنامه اجازه می دهد اتصالات را از هر آدرس IPv4 بپذیرد. اگر این را تنظیم نکنید، برنامه فقط از داخل کانتینر قابل دسترسی خواهد بود، نه از دستگاه میزبان یا شبکه های خارجی.
استقرار
می توانید این ظرف Docker را در هر ارائه دهنده ابری که از Docker پشتیبانی می کند مستقر کنید. به عنوان مثال، می توانید از پلتفرم هایی مانند Heroku، DigitalOcean یا AWS ECS استفاده کنید.
از آنجا که من یکی از بنیانگذاران Sliplane هستم، به شما نشان خواهم داد که چگونه آن را در آنجا مستقر کنید. پس از ثبت نام، می توانید با انتخاب مخزن Github خود یک سرویس جدید ایجاد کنید. سپس فقط تنظیمات پیش فرض را نگه دارید و روی deploy کلیک کنید.
پس از استقرار، برنامه Fastify شما در زیر دامنه sliplane.app در دسترس خواهد بود، معمولاً فقط نام سرویس شما است. همچنین میتوانید گزارشهای برنامه خود را ببینید، معیارهایی مانند میزان مصرف پردازنده و حافظه، اضافه کردن فضای ذخیرهسازی مداوم و موارد دیگر را ببینید. هر زمان که به مخزن خود فشار بیاورید، Sliplane به طور خودکار برنامه شما را مستقر می کند.
اگر می خواهید Sliplane را امتحان کنید، 2 روز اول رایگان است! آن را امتحان کنید و نظر خود را به من بگویید 🙂
Fastify را در 2 دقیقه پیاده کنید 🚀
مراحل بعدی
آیا چیز دیگری هست که بخواهید بدانید؟ آیا برای نصب برنامه Fastify به کمک نیاز دارید؟ آیا برای استقرار آن در یک پلتفرم خاص به کمک نیاز دارید؟ با خیال راحت تماس بگیرید! می توانید من را در X پیدا کنید یا فقط در اینجا در این وبلاگ نظر دهید.
به سلامتی،
جوناس