آنچه در این مقاله میخوانید
آموزش راهاندازی برنامه React با NGINX در Docker
۱۲ اسفند ۱۳۹۹
React یکی از کتابخانههای پرکاربرد JavaScript برای توسعه رابطهای کاربری مدرن و تعاملی است. این کتابخانه معمولاً با استفاده از ابزارهایی مانند create-react-app راهاندازی میشود که امکان توسعه سریع و آسان پروژههای React را فراهم میکند. با این حال، زمانی که قصد دارید یک برنامه React را در محیط Production مستقر کنید، تنها اجرای محلی آن کافی نیست و لازم است خروجی نهایی برنامه با استفاده از یک وبسرور پایدار و بهینه مانند NGINX در دسترس قرار گیرد.
در این مقاله از لیارا، نحوه استقرار یک برنامه React را در Docker بهصورت مرحلهبهمرحله آموزش خواهیم داد.
همین حالا به سادگی پروژههای داکر خود را در هاست ابری لیارا دیپلوی کنید!
✅ دامنه رایگان ✅ ترافیک نامحدود ✅ هزینه ساعتی
خرید هاست ابری Docker
آنچه در ادامه خواهید خواند:
- پیش نیاز ها
- مرحله اول: ایجاد و ساخت پروژه React
- مرحله دوم: آماده سازی فایل های Docker
- مرحله سوم: ساخت Docker image
- مرحله چهارم: اجرای Container
- سوالات متداول
- جمع بندی
پیش نیاز ها
پیش از شروع هرگونه فرآیندی، اطمینان حاصل کنید تا موارد زیر روی سیستم شما نصب شده باشد:
- Node.js و npm
- Docker Engine
- دسترسی به ترمینال یا خط فرمان
مرحله اول: ایجاد و ساخت پروژه React
ابتدا یک پروژهی جدید React را با استفاده از دستور زیر ایجاد کنید.
npx create-react-app react-nginx
این دستور یک پوشه جدید با نام react-nginx ایجاد میکند که شامل ساختار پایه برنامه React است. وارد پوشه پروژه شوید.
cd react-nginx

مرحله دوم: آماده سازی فایل های Docker
تمامی مراحل را به درستی و قدم به قدم انجام دهید تا نتیجه درستی را از این فرآیند داشته باشید.
ایجاد فایل dockerignore.
برای جلوگیری از کپی شدن فایلها یا پوشههای غیرضروری مانند node_modules به داخل Docker image، فایل .dockerignore را به شکل زیر ایجاد کنید.
echo "node_modules" > .dockerignore
ایجاد فایل Dockerfile
در ریشه پروژه (پوشه react-nginx) فایلی با نام Dockerfile ایجاد کرده و محتوای زیر را در آن قرار دهید.
# Stage 1: Build the React app
FROM node:18 AS builder
WORKDIR /usr/src/app
COPY . .
RUN npm install && npm run build
# Stage 2: Serve app using NGINX
FROM nginx:alpine
WORKDIR /usr/share/nginx/html
RUN rm -rf ./*
COPY --from=builder /usr/src/app/build .
EXPOSE 80
ENTRYPOINT ["nginx", "-g", "daemon off;"]
همین الان، هاست ابری React را با سرعت بالا راهاندازی کنید.
✅ بدون نیاز به پیکربندی ✅ استقرار آسان ✅ مناسب برای React
خرید هاست React
مرحله سوم: ساخت Docker image
پس از آمادهسازی فایلها، از دستور زیر برای ساخت Docker image استفاده کنید.
docker build -t react-nginx .
با اجرای این دستور، Docker فایلهای پروژه را خوانده و image نهایی را با نام react-nginx میسازد.
مرحله چهارم: اجرای Container
برای اجرای container از ایمیجهای ساختهشده، دستور زیر را اجرا کنید.
docker run --name react-nginx-app --rm -it -p 8000:80 react-nginx
پس از اجرای موفقیتآمیز کانتینرها، میتوانید با مراجعه به آدرس زیر در مرورگر، برنامه خود را مشاهده کنید.
http://localhost:8000
به این ترتیب، توانستید تا یک برنامه React را با استفاده از Docker build کرده و خروجی آن را از طریق وبسرور NGINX در محیط عملیاتی اجرا کنید.
سوالات متداول
در ادامه به سوالاتی که امکان دارد در این زمینه برای شما بدون پاسخ بماند، جوابهای کوتاه اما مفیدی دادهایم که با استفاده از آن میتوانید به سوال خود پاسخ صحیحی را بدهید.
چرا از دو مرحله در Dockerfile استفاده می کنیم؟
استفاده از ساختار Multi-Stage باعث کاهش حجم ایمیجهای نهایی میشود. در مرحله اول تنها build انجام شده و در مرحله دوم فقط فایلهای لازم برای اجرا به image منتقل میشود. این موضوع به بهینهسازی امنیت و سرعت اجرای کانتینرها کمک میکند.
آیا می توان برنامه React را مستقیما با Node.js اجرا کرد؟
خیر، برنامههای تولیدشده با create-react-app برای اجرا در حالت production نیازی به Node.js ندارند. این برنامهها فقط شامل فایلهای استاتیک HTML , CSS و JS هستند.
تفاوت بین nginx و nginx:alpine چیست؟
نسخهی nginx:alpine یک image سبکتر از NGINX است که بر پایه Alpine Linux ساخته شده و حجم کمتری دارد. این نسخه برای استفاده در محیط production توصیه میشود.
چگونه می توان فایل های استاتیک را cache کرد؟
با ساخت یک فایل پیکربندی سفارشی NGINX و استفاده از دستوراتی مانند expires یا cache-control در آن، میتوانید زمان انقضای کش فایلهای JS , CSS و ایمیج را مشخص کنید. این کار باعث بهبود عملکرد برنامه میشود.
چگونه Consul را با استفاده از Docker پیکربندی کنیم!
پیکربندی با استفاده از Docker
جمع بندی
در این آموزش با مراحل کامل ساخت و اجرای یک برنامه React در محیط Docker آشنا شدهایم. با استفاده از NGINX بهعنوان وبسرور و Docker برای ایزولهسازی محیط، میتوان برنامههای Front-end را بهصورت حرفهای و در حالت production اجرا و توزیع کرد.