اپ Node.js
مقدمه
جاوا اسکریپت یکی از زبانهایی است که امروزه در توسعهی فرانتاند و بکاند بسیار مورد استفاده قرار میگیرد. از محبوبترین محیطهای runtime آن Node.js است. قصد داریم در این مستند در مورد نحوهی نوشتن داکرفایل (Dockerfile) برای اپهایی که با Node.js اجرا میشوند صحبت کنیم.
نوشتن داکرفایل
ابتدا در پوشهی اصلی اپ خود یک فایل به نام
Dockerfile
بسازید.
خطوط زیر را داخل داکرفایل کپی کنید:
FROM hub.hamdocker.ir/node:16 as builder
ARG NODE_OPTIONS
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build
FROM hub.hamdocker.ir/node:16 as runner
WORKDIR /app
ENV NODE_ENV production
COPY --from=builder /app/ ./
CMD ["npm", "start"]
توضیحات:
توجه کنید که کار ساخت ایمیج در ۲ مرحله انجام میشود. یک بار dependencyها نصب شده و بعد در ایمیج نهایی فایلهای ساخته شده کپی میشود.
در خط اول ما یک ایمیج داکری
node
با توجه به نسخهی Node.js اپ خود انتخاب میکنیم و نام آن راbuilder
میگذاریم. میتوانید نسخهی Node.js را دقیقتر هم تعیین کنید. مثلا ازnode:16.14.0
استفاده کنید. آدرسhub.hamdocker.ir/
در ابتدای نام ایمیج برای این است که رجیستری همروش استفاده کنیم.با
ARG
میتوان متغیرهایی را تعیین کرد که موقع بیلد به داکر میدهیم. به این متغیرها آرگومان بیلد میگوییم. اینجا ماNODE_OPTIONS
را مشخص کردهایم. با استفاده از بخش Enviornment Variables در دارکوب، میتوانید از این متغیر در هنگام اجرای اپهای خود بهره بگیرید. مطابق تصویر زیر، میتوان این متغیر را در بخش متغیرهای محیطی تعریف کرد.
سپس مسیری که در آن کار میکنیم تعیین شده است. عبارت
WORKDIR
باعث میشود پوشهی/app
ساخته شود و بقیهی دستورها در آن اجرا میشوند. نام این پوشه دلخواه است و هر چیزی میتواند باشد.با
COPY
فایلهایpackage.json
وpackage-lock.json
را به داخل ایمیج کپی میکنیم. اگر از yarn استفاده میکنید فایلyarn.lock
را کپی کنید. در این مرحله کد اصلی کپی نمیشود؛ زیرا اولا این فایلها خیلی کمتر از کد اصلی تغییر میکنند. دوما داکر یک ویژگی دارد که موقع بیلد ایمیج اگر فایلها تغییری نکرده باشند از کش (cache) استفاده میکند. با این کار ما موقع نصب پکیجها (که مدت قابل توجهی طول میکشد) از کش داکر استفاده میکنیم و بیلد سریعتری داریم.با
RUN
میتوان موقع بیلد دستوراتی اجرا کرد. اینجا ما با npm پکیجهای مورد نیاز را نصب میکنیم. اگر از yarn استفاده میکنید دستوراتی که باnpm
آمده است را تغییر دهید.حال تمام کد را با
COPY
به ایمیج کپی میکنیم. بعد باRUN
عملیات build را انجام میدهیم. تا اینجا اپ ما بیلد شده و آمادهی اجراست.بعد از نصب پکیجها کار ما با ایمیج جدید شروع میشود. مجددا میتوانید نسخهی ایمیج را طبق نیاز تغییر دهید. عبارت
WORKDIR
هم مانند قبل است.با
ENV
در ایمیج یک متغیر محیطی ایجاد میشود. اینجا ما مقدارNODE_ENV
راproduction
قرار دادهایم.این بار با COPY محتویات پوشهی
/app
از ایمیج قبلی را به ایمیج فعلی کپی میکنیم. به کاربرد--from
توجه کنید که اسم ایمیج قبلی را مشخص کرده است.در نهایت با
CMD
میگوییم موقع اجرای کانتینر از روی این ایمیج دستورnpm start
اجرا شود
در این مستند سعی کردیم به طور کلی ساخت داکرفایل برای اپهای Node.js را آموزش دهیم. با توجه به تنظیماتی که برای اپ خود دارید و ابزارهایی که استفاده میکنید، آن را تغییر دهید تا مناسب اپ شما بشود.