پرش به مطلب اصلی

قالب های Dockerfile برای فریم ورک Angular

این راهنما به شما کمک می‌کند تا Dockerfile مناسب برای پروژه‌های مبتنی بر Angular بسازید.

نکات کلیدی برای تمام Dockerfile ها

  1. استفاده از ایمیج های رسمی Node.js
  2. ایجاد یک کاربر غیر root برای امنیت بیشتر
  3. استفاده از متغیرهای محیطی برای انعطاف‌پذیری بیشتر
  4. بهینه‌سازی برای Angular CLI و ابزارهای مرتبط
FROM node:$node_version as build
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
USER app
WORKDIR /home/app
COPY --chown=app:app package*.json /home/app/
RUN npm install
COPY --chown=app:app . /home/app/
RUN npm run build --prod
FROM nginx:$nginx_version as production
COPY --from=build /home/app/dist/*app-name*/ /usr/share/nginx/html/
RUN echo 'server {\n\
listen 80;\n\
server_name _;\n\
location / {\n\
root /usr/share/nginx/html;\n\
try_files $uri $uri/ /index.html;\n\
}\n\
location /index.html {\n\
root /usr/share/nginx/html;\n\
expires 0d;\n\
add_header Cache-Control "no-store, no-cache, must-revalidate";\n\
}\n\
}' > /etc/nginx/conf.d/default.conf
اطلاع
  • این Dockerfile از یک ساختار چند مرحله‌ای استفاده می‌کند: مرحله ساخت و مرحله تولید.
  • در مرحله ساخت، پروژه Angular با استفاده از ng build --prod کامپایل می‌شود.
  • در مرحله تولید، فایل‌های ساخته شده به یک سرور Nginx منتقل می‌شوند.
  • پیکربندی Nginx برای پشتیبانی از Angular routing و Single Page Application (SPA) تنظیم شده است.
توجه
  • متغیر $node_version را با نسخه مورد نظر Node.js جایگزین کنید.
  • متغیر $nginx_version را با نسخه مورد نظر Nginx جایگزین کنید.
  • عبارت *app-name* را با نام پروژه Angular خود جایگزین کنید.
  • اطمینان حاصل کنید که Angular CLI به صورت گلوبال یا در dependencies پروژه نصب شده است.

بیلد و اجرا کردن داکر فایل

برای بیلد کردن داکر فایل و ساخت ایمیج از دستور

docker build -t [ProjectName] .
  • t- : دادن برچسپ و نام مخصوص برای پروژه

و سپس برای اجرای آن:

docker run -p outport:80 --name=container-name -d [ProjectName]
  • p- : تعیین پورت برای اجرای پروژه
  • outport : پورتی خارجی
  • name-- : تعیین نام کانتینر
  • d- : اجرای کانتینر در حالت بدون نمایش
توجه
  1. امنیت: همیشه از آخرین نسخه‌های پایدار Node.js و Nginx استفاده کنید.
  2. بهینه‌سازی: از تکنیک‌های بهینه‌سازی Angular مانند ahead-of-time compilation استفاده کنید.
  3. تست: قبل از استقرار در محیط تولید، حتماً ایمیج Docker خود را در یک محیط مشابه تولید تست کنید.
  4. کش: برای بهبود عملکرد، از استراتژی‌های مناسب کش‌گذاری در Nginx استفاده کنید.