قالب های Dockerfile برای Node.js
این راهنما به شما کمک میکند تا Dockerfile مناسب برای پروژههای Node.js بسازید.
نکات کلیدی برای تمام Dockerfile ها
- استفاده از ایمیج های رسمی Node.js
- ایجاد یک کاربر غیر root برای امنیت بیشتر
- استفاده از متغیرهای محیطی برای انعطافپذیری بیشتر
- بهینهسازی برای کاربردهای مختلف Node.js
FROM node:$node_version
ARG UID=1000
ARG GID=1000
RUN groupadd -g $GID -o app && \
useradd -g $GID -u $UID -mr -d /home/app -o -s /bin/bash app
WORKDIR /home/app
COPY --chown=app:app package*.json ./
RUN npm install
COPY --chown=app:app . .
USER app
ENV NODE_ENV=production
ENV PORT=3000
EXPOSE $PORT
CMD [ "npm", "start" ]
اطلاع
- این Dockerfile برای یک برنامه Node.js استاندارد طراحی شده است.
- از یک کاربر غیر root برای اجرای برنامه استفاده میکند.
- وابستگیها قبل از کپی کد اصلی نصب میشوند تا از cache داکر بهتر استفاده شود.
- متغیرهای محیطی برای تنظیمات مختلف در نظر گرفته شده اند.
توجه
- متغیر
$node_versionرا با نسخه مورد نظر Node.js جایگزین کنید. - دستور
CMDرا بر اساس نیاز پروژه تنظیم کنید (مثلاًnpm start,node index.js, etc.). - در صورت نیاز به نصب پکیجهای سیستمی اضافی، آنها را قبل از
npm installاضافه کنید.
بیلد و اجرا کردن داکر فایل
برای بیلد کردن داکر فایل و ساخت ایمیج:
docker build -t [ProjectName] .
- t- : دادن برچسب و نام مخصوص برای پروژه
و سپس برای اجرای آن:
docker run -p outport:inport[3000] --name=container-name -d [ProjectName]
- p- : تعیین پورت برای اجرای پروژه
- outport : پورت خارجی
- inport : پورت داخلی پروژه که در داکر فایل تعیین کردهاید
- name-- : تعیین نام کانتینر
- d- : اجرای کانتینر در حالت بدون نمایش
توجه
-
امنیت:
- همیشه از آخرین نسخههای پایدار Node.js استفاده کنید
- از نصب پکیجهای غیرضروری خودداری کنید
- حتماً از کاربر غیر root استفاده کنید
-
بهینهسازی:
- از .dockerignore برای حذف فایلهای غیرضروری استفاده کنید
- در محیط production از
npm ciبه جایnpm installاستفاده کنید - حجم ایمیج نهایی را با استفاده از ایمیجهای alpine کاهش دهید
-
تست: قبل از استقرار در محیط تولید، حتماً ایمیج Docker خود را تست کنید.