قالب های Dockerfile برای فریم ورک Angular
این راهنما به شما کمک میکند تا Dockerfile مناسب برای پروژههای مبتنی بر Angular بسازید.
نکات کلیدی برای تمام Dockerfile ها
- استفاده از ایمیج های رسمی Node.js
- ایجاد یک کاربر غیر root برای امنیت بیشتر
- استفاده از متغیرهای محیطی برای انعطافپذیری بیشتر
- بهینهسازی برای 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- : اجرای کانتینر در حالت بدون نمایش
توجه
- امنیت: همیشه از آخرین نسخههای پایدار Node.js و Nginx استفاده کنید.
- بهینهسازی: از تکنیکهای بهینهسازی Angular مانند ahead-of-time compilation استفاده کنید.
- تست: قبل از استقرار در محیط تولید، حتماً ایمیج Docker خود را در یک محیط مشابه تولید تست کنید.
- کش: برای بهبود عملکرد، از استراتژیهای مناسب کشگذاری در Nginx استفاده کنید.