<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمدرضا عبداله نژاد</title>
        <link>https://virgool.io/feed/@muhammadrezaabdollahnejad</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 13:40:24</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>محمدرضا عبداله نژاد</title>
            <link>https://virgool.io/@muhammadrezaabdollahnejad</link>
        </image>

                    <item>
                <title>ساخت و اجرای Next.js بدون نصب Node.js با استفاده از Docker</title>
                <link>https://virgool.io/@muhammadrezaabdollahnejad/%D8%B3%D8%A7%D8%AE%D8%AA-%D9%88-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-nextjs-%D8%A8%D8%AF%D9%88%D9%86-%D9%86%D8%B5%D8%A8-nodejs-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-docker-eppblte9d2sr</link>
                <description>سلام من خیلی حرفه‌ای نیستم ولی خواستم تجربه‌ای که خودم به‌دست آوردم رو با شما به اشتراک بگذارم. چون موقع جست‌وجو برای این موضوع محتوای خوبی پیدا نکردم، گفتم شاید برای بقیه هم مفید باشه.این آموزش مخصوص حالت Development هست (نه Production). هنوز برای محیط عملیاتی ازش استفاده نکردم ولی احتمالاً در آینده نسخه‌ی Production رو هم منتشر می‌کنم.خب مواد اولیه :- Docker (اگر از سیستم عامل ویندوز استفاده میکنید Docker Desktop)- code editor یا IDE مثل (vs code / webstorm / intellij)بعد از اینکه Docker نصب کردید برای اینکه مطمئن باشید کامند زیر رو اجرا کنید.docker --versionو اگر نتیجه ای مثل خط پایین گرفتید یعنی نصب اکی بودهDocker version 28.0.2, build 12345abc
با توجه به نسخه‌ای که استفاده می‌کنید، این عددها ممکنه متفاوت باشن.

الان که مطمئن شدیم Docker درست نصب شده، می‌ریم سراغ ساخت محیط Node.js داخل Docker ، این صفحه راهنما داده که چطور نصب کنیم حالا منم اینجا مینویسم . دستوراتی که این زیر هست رو به ترتیب در shell یا cmd بزنید.# Docker has specific installation instructions for each operating system.
# Please refer to the official documentation at https://docker.com/get-started/

# Pull the Node.js Docker image:
docker pull node:22-alpine

# Create a Node.js container and start a Shell session:
docker run -it --rm --entrypoint sh node:22-alpine

# Verify the Node.js version:
node -v # Should print &quot;v22.21.0&quot;.

# Verify npm version:
npm -v # Should print &quot;10.9.4&quot;.
به طور خلاصه بگم چیکار میکنه میاد Node نسخه 22 رو از image های روی Docker دانلود میکنه روی سیستم لوکال شما و سه تا دستور اخر برای این هست که مطمئن بشید همه چیز درست کار میکنه. خواستید میتونید این پنجره را ببندید.

خب الان که همه چیز اماده هست میتونیم بریم سراغ ساخت پروژه Next.js 
اول از همه میریم داخل پوشه ای که میخواهیم پروژه ساخته بشه مثلا من میرم درایو D و یک پوشه میسازم اسمشو میزام test-docker و بعد کامند زیر رو میزنمdocker initو بعد این گزینه رو میزنمOther - general purpose starting point for containerizing your applicationاین دستور میاد و برای ما 4 تافایل مربوط به Docker به اسم های زیر میسازه..dockerignore
Dockerfile
compose.yaml
README.Docker.md الان باید بریم و پروژه Next.js که میخواهیم رو بسازیم.با استفاده از این کامند این کار انجام میشه :docker run --rm -it -v D:\test-docker:/app -w /app node:22-alpine sh -c &quot;npx create-next-app@latest front-app&quot;و پروژه Next.js داخل پوشه ای به اسم front-app ساخته میشه.ساختار پروژه تا اینجا به این شکل شده :D:\test-docker
├── Dockerfile
├── compose.yaml
├── .dockerignore
├── README.Docker.md 
└── front-app
    ├── package.json
    ├── next.config.js
    ├── pages/
    ├── ...
خب الان پوشه test-docker رو با کد ادیتوری که داریم باز میکنیم .اول میریم سراغ Dockerfile ، اصلا چی هست؟ Dockerfile برای ساخت image استفاده میشه مقادیر زیر رو داخل Dockerfile قرار میدهیم.# Dockerfile (development)
FROM node:22-alpine

# فعال‌سازی hot reload
ENV WATCHPACK_POLLING=true

WORKDIR /app

# فقط فایل‌های package برای cache نصب
COPY front-app/package*.json ./
RUN npm install

# در حالت dev بقیه کدها از طریق volume روی سیستم host میاد
EXPOSE 3000

# اجرای سرور در حالت dev
CMD [&quot;npm&quot;, &quot;run&quot;, &quot;dev&quot;]بعد میریم سراغ compose.yaml و مقادیر زیر رو داخلش قرار میدیم.version: &quot;3.8&quot;

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - &quot;3000:3000&quot;
    environment:
      - WATCHPACK_POLLING=true
    volumes:
      - ./front-app:/app
      - /app/node_modules
    command: npm run dev نکته‌ها:🔹 volumes باعث می‌شه کدهای روی سیستم، داخل کانتینر sync بشن.🔹 مسیر /app/node_modules از overwrite شدن جلوگیری می‌کنه.🔹 دستور command: npm run dev پروژه رو در حالت hot reload اجرا می‌کنه.و در نهایت با زدن کامند docker compose up به راحتی پروژه بالا میاد و روی port 3000 امکان دسترسی به پروژه وجود داره.در نسخه‌های جدید Next.js (از 13 به بعد)، وقتی فقط می‌نویسی next dev، به صورت پیش‌فرض از Turbopack استفاده می‌کنه.اما Turbopack هنوز در حالت توسعه‌ی آزمایشی هست و در محیط Docker یا bind mount (وقتی پروژه داخل ویندوز و کد در لینوکسه) معمولاً تغییرات را درست تشخیص نمی‌دهد و hot reload یا recompile درست کار نمی‌کند.در عوض webpack پایدار است و در Docker به‌خوبی عمل می‌کند.درصورتی که دیدید hotreload یا recompile درست کار نمیکنه ، باید در اسکریپت dev داخل package.json پروژه، بنویسید:&quot;scripts&quot;: {
  &quot;dev&quot;: &quot;next dev --webpack&quot;
} با این روش می‌تونید بدون نصب Node.js، پروژه‌ی Next.js خودتون رو در محیط Docker توسعه بدید.اگر تجربه یا روش بهتری دارید، خوشحال می‌شم در بخش نظرات بنویسید تا بقیه هم(بیشتر خودم D:) استفاده کنن.</description>
                <category>محمدرضا عبداله نژاد</category>
                <author>محمدرضا عبداله نژاد</author>
                <pubDate>Fri, 24 Oct 2025 20:04:09 +0330</pubDate>
            </item>
            </channel>
</rss>