{"id":82701,"date":"2024-11-05T20:30:57","date_gmt":"2024-11-05T17:00:57","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/step-by-step-guide-to-containerize-your-full-stack-mern-application-using-docker-compose-3a8f\/"},"modified":"2024-11-05T20:30:57","modified_gmt":"2024-11-05T17:00:57","slug":"step-by-step-guide-to-containerize-your-full-stack-mern-application-using-docker-compose-3a8f","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/step-by-step-guide-to-containerize-your-full-stack-mern-application-using-docker-compose-3a8f\/","title":{"rendered":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 MERN \u062a\u0645\u0627\u0645 \u067e\u0634\u062a\u0647 \u062e\u0648\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker Compose."},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 MERN \u06a9\u0627\u0645\u0644 \u0627\u0633\u062a\u06a9\u060c \u0627\u0628\u062a\u062f\u0627 \u0647\u0631 \u062c\u0632\u0621 \u067e\u0634\u062a\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0648 \u0633\u067e\u0633 \u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0647 Docker Compose \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 1: \u0645\u062e\u0632\u0646 GitHub \u062e\u0648\u062f \u0631\u0627 \u06a9\u0644\u0648\u0646 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0628\u0631\u0648\u06cc\u062f<\/p>\n<p>\u0645\u062e\u0632\u0646 GitHub \u062e\u0648\u062f \u0631\u0627 \u06a9\u0644\u0648\u0646 \u06a9\u0646\u06cc\u062f: \u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u0645\u0627\u0646\u0646\u062f \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0627\u0632 \u0645\u062e\u0632\u0646 github \u062e\u0648\u062f \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f <\/p>\n<p>Go to your terminal and run:<br \/>\nbash<br \/>\n   git clone https:\/\/github.com\/Uwadon1\/dockerize-a-mern-stack-app.git<br \/>\n&#8220;<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u0628\u0627\u06cc\u062f \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062c\u062f\u06cc\u062f \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0628\u0631\u0648\u06cc\u062f<\/p>\n<p>\u0633\u06cc \u062f\u06cc dockerize-a-mern-stack-app<\/p>\n<p>\u0628\u0631\u0631\u0633\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc: \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u067e\u0648\u0634\u0647 \u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 \u062f\u0627\u0631\u0627\u06cc Frontend\/Web-tier\u060c Backend\/app-lier \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0633\u062a\u0646\u062f. \u0627\u06af\u0631 \u0686\u0646\u06cc\u0646 \u0627\u0633\u062a\u060c \u0645\u062c\u0645\u0648\u0639\u0647 \u0646\u0647\u0627\u06cc\u06cc \u0645\u0627 \u0628\u0647 \u0627\u062d\u062a\u0645\u0627\u0644 \u0632\u06cc\u0627\u062f \u0634\u0628\u06cc\u0647 \u0627\u06cc\u0646 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f\u060c \u0644\u0637\u0641\u0627\u064b \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0632\u06cc\u0631\u0627 \u0645\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 \u0628\u0627\u0637\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645: `<br \/>\nproject-directory\/ \u251c\u2500\u2500 frontend\/ \u251c\u2500\u2500 backend\/ \u251c\u2500\u2500 database\/ \u2514\u2500\u2500 docker-compose.yml (\u0627\u06cc\u0646 \u0628\u0639\u062f\u0627 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u062f \u0634\u062f)<\/p>\n<p>\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 .dockerignore \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 2: \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u067e\u0634\u062a\u0647 Dockerfiles \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>Frontend (React)<\/p>\n<p>\u062d\u0631\u06a9\u062a \u0628\u0647 frontend \u067e\u0648\u0634\u0647 \u0648 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 Dockerfile:<\/p>\n<p>Dockerfile<br \/>\n     # Dockerfile \u0628\u0631\u0627\u06cc frontend<\/p>\n<p>\u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0648\u0627\u0644\u062f\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n\u062a\u0648\u0636\u06cc\u062d\u0627\u062a: Dockerfile \u0628\u0631\u0627\u06cc \u0633\u0645\u062a \u0645\u0634\u062a\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u067e\u0634\u062a\u0647 MERN<\/p>\n<p>  \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0648\u0627\u0644\u062f\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>FROM node:18.9.1<\/p>\n<p>  \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/p>\n<p>WORKDIR \/ \u0628\u0631\u0646\u0627\u0645\u0647<\/p>\n<p>  \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0632 \u0647\u0627\u0633\u062a \u062e\u0648\u062f \u062f\u0631 \u0645\u06a9\u0627\u0646 \u0641\u0639\u0644\u06cc \u062e\u0648\u062f \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f<\/p>\n<p>COPY package.json .<\/p>\n<p>  \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 \u0633\u06cc\u0633\u062a\u0645 \u062a\u0635\u0648\u06cc\u0631\u06cc \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0646\u0635\u0628 npm \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<p>  \u0628\u0647 Docker \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631 \u062d\u0627\u0644 \u06af\u0648\u0634 \u062f\u0627\u062f\u0646 \u0628\u0647 \u067e\u0648\u0631\u062a \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a<\/p>\n<p>EXPOSE 5173<\/p>\n<p>  \u0628\u0642\u06cc\u0647 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062e\u0648\u062f \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc \u062e\u0648\u062f \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f. .<\/p>\n<p>  \u062f\u0633\u062a\u0648\u0631 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<p>CMD [&#8220;npm&#8221;, &#8220;run&#8221;, &#8220;dev&#8221;]\n<p>\u062a\u0648\u0636\u06cc\u062d: \u0627\u06cc\u0646 Dockerfile \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc \u06a9\u0646\u062f\u060c \u06a9\u062f \u0641\u0631\u0627\u0646\u062a \u0627\u0646\u062f \u0631\u0627 \u0645\u06cc \u0633\u0627\u0632\u062f \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f serve \u0628\u0631\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 Dockerfile Breakdown \u0627\u06cc\u0646 Dockerfile \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062d\u06cc\u0637 Node.js \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0645\u062d\u0641\u0638\u0647 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 React frontend \u0645\u06cc \u0633\u0627\u0632\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0631 \u062e\u0637 \u0631\u0627 \u0628\u0634\u06a9\u0646\u06cc\u0645:<\/p>\n<p>FROM node:18.9.1: \u0627\u06cc\u0646 \u062e\u0637 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0627\u06cc\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f. node:18.9.1 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0627 \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc Node.js 18.9.1 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<br \/>\nWORKDIR \/app: \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u062f\u0631\u0648\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0631\u0648\u06cc \/app \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0639\u062f\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f.<br \/>\nCOPY package.json .: \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062f\u0631 \u067e\u0648\u0634\u0647 \/app \u062f\u0631 \u062f\u0627\u062e\u0644 \u0638\u0631\u0641 \u06a9\u067e\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0634\u0627\u0645\u0644 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u062a.<br \/>\nRUN npm install: \u062f\u0633\u062a\u0648\u0631 npm install \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u062a\u0645\u0627\u0645 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0641\u0647\u0631\u0633\u062a \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u062f.<br \/>\nEXPOSE 5173: \u0628\u0647 Docker \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0647 \u062f\u0631\u06af\u0627\u0647 5173 \u06af\u0648\u0634 \u0645\u06cc \u062f\u0647\u062f. \u0627\u06cc\u0646 \u067e\u0648\u0631\u062a \u0627\u063a\u0644\u0628 \u062a\u0648\u0633\u0637 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0645\u0627\u0646\u0646\u062f Create React App \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<br \/>\n\u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f. .: \u0647\u0645\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc \u0628\u0627\u0642\u06cc\u0645\u0627\u0646\u062f\u0647 \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062f\u0631 \u067e\u0648\u0634\u0647 \/app \u062f\u0631 \u062f\u0627\u062e\u0644 \u0638\u0631\u0641 \u06a9\u067e\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0634\u0627\u0645\u0644 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 React \u0634\u0645\u0627 \u0645\u06cc \u0634\u0648\u062f.<br \/>\nCMD [&#8220;npm&#8221;, &#8220;run&#8221;, &#8220;dev&#8221;]: \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636\u06cc \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a dev \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 React \u0634\u0645\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0633\u0627\u062e\u062a \u0648 \u0627\u062c\u0631\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631: \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u06a9\u0631\u060c \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<br \/>\n\u0636\u0631\u0628\u0647 \u0634\u062f\u06cc\u062f<br \/>\ndocker build -t mern-frontend .<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647 \u0646\u0627\u0645 mern-frontend \u0628\u0631 \u0627\u0633\u0627\u0633 Dockerfile \u062f\u0631 \u0641\u0647\u0631\u0633\u062a \u0641\u0639\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f. \u062a\u0648\u062c\u0647: \u0644\u0637\u0641\u0627\u064b \u0642\u0628\u0644 \u0627\u0632 \u0633\u0627\u062e\u062a\u0646 \u062a\u0635\u0648\u06cc\u0631 docker \u062e\u0648\u062f \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u062f\u0633\u06a9\u062a\u0627\u067e docker \u0634\u0645\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f.<br \/>\n\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0635\u0648\u06cc\u0631 \u062c\u0644\u0648\u06cc\u06cc \u0645\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0645\u0627 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0634\u0628\u06a9\u0647 docker \u062e\u0648\u062f\u060c \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<br \/>\n\u0636\u0631\u0628\u0647 \u0634\u062f\u06cc\u062f<br \/>\n\u0634\u0628\u06a9\u0647 docker \u0627\u06cc\u062c\u0627\u062f mern<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u0627 \u0628\u0627\u06cc\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062e\u0648\u062f \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062e\u0648\u062f \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<br \/>\n\u0636\u0631\u0628\u0647 \u0634\u062f\u06cc\u062f<br \/>\ndocker run &#8211;name=frontend &#8211;network=mern -d -p 5173:5173 mern-frontend<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u0635\u0648\u06cc\u0631 mern-frontend \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u067e\u0648\u0631\u062a 5173 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0647 \u067e\u0648\u0631\u062a 5173 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0634\u0645\u0627 \u0646\u06af\u0627\u0634\u062a \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 React \u062e\u0648\u062f \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 http:\/\/localhost:5173 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p>Backend (Node.js &#038; Express)<\/p>\n<p>\u0628\u0647\u062a\u0631\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0645\u06cc\u0634\u0647 \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u062e\u0637\u0627 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f.<br \/>\n\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 (MongoDB)<\/p>\n<p>\u0628\u0631\u0627\u06cc MongoDB\u060c \u0634\u0645\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 Dockerfile \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0632\u06cc\u0631\u0627 MongoDB \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc \u062f\u0631 Docker Hub \u062f\u0627\u0631\u062f. <\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f\u060c \u0627\u0632:<br \/>\n\u0636\u0631\u0628\u0647 \u0634\u062f\u06cc\u062f<br \/>\ndocker run &#8211;name=mongodb &#8211;network=mern -d -p 27017:27017 -v ~\/opt\/data:data\/db mongo:latest<\/p>\n<p>\u062d\u0631\u06a9\u062a \u0628\u0647 backend \u067e\u0648\u0634\u0647 \u0648 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 Dockerfile:<\/p>\n<p>`dockerfile<br \/>\n # Dockerfile \u0628\u0631\u0627\u06cc Backend<\/p>\n<p>FROM node:18.9.1<\/p>\n<p>WORKDIR \/ \u0628\u0631\u0646\u0627\u0645\u0647<\/p>\n<p>COPY package.json .<\/p>\n<p>\u0646\u0635\u0628 npm \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f. .<\/p>\n<p>EXPOSE 5050<\/p>\n<p>CMD [&#8220;npm&#8221;, &#8220;start&#8221;]\n<p>\u062a\u0648\u0636\u06cc\u062d: \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0627\u0637\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u06af\u0648\u0634 \u062f\u0627\u062f\u0646 \u0628\u0647 \u067e\u0648\u0631\u062a 5000 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f npm start \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 Dockerfile Breakdown \u0628\u0631\u0627\u06cc Backend \u0627\u06cc\u0646 Dockerfile \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Backend Node.js \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0631 \u062e\u0637 \u0631\u0627 \u0628\u0634\u06a9\u0646\u06cc\u0645:<\/p>\n<p>FROM node:18.9.1: \u0627\u06cc\u0646 \u062e\u0637 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0627\u06cc\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f. node:18.9.1 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0627 \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc Node.js 18.9.1 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<br \/>\nWORKDIR \/app: \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u062f\u0631\u0648\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0631\u0648\u06cc \/app \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0639\u062f\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f.<br \/>\nCOPY package.json .: \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062f\u0631 \u067e\u0648\u0634\u0647 \/app \u062f\u0631 \u062f\u0627\u062e\u0644 \u0638\u0631\u0641 \u06a9\u067e\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0634\u0627\u0645\u0644 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u062a.<br \/>\nRUN npm install: \u062f\u0633\u062a\u0648\u0631 npm install \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u062a\u0645\u0627\u0645 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0641\u0647\u0631\u0633\u062a \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u062f.<br \/>\n\u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f. .: \u0647\u0645\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc \u0628\u0627\u0642\u06cc\u0645\u0627\u0646\u062f\u0647 \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062f\u0631 \u067e\u0648\u0634\u0647 \/app \u062f\u0631 \u062f\u0627\u062e\u0644 \u0638\u0631\u0641 \u06a9\u067e\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0634\u0627\u0645\u0644 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc Node.js \u0634\u0645\u0627 \u0645\u06cc \u0634\u0648\u062f.<br \/>\nEXPOSE 5050: \u0628\u0647 Docker \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0647 \u067e\u0648\u0631\u062a 5050 \u06af\u0648\u0634 \u0645\u06cc \u062f\u0647\u062f. \u0627\u06cc\u0646 \u067e\u0648\u0631\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0633\u0631\u0648\u0631 Node.js \u0634\u0645\u0627 \u0628\u0647 \u0622\u0646 \u06af\u0648\u0634 \u0645\u06cc \u062f\u0647\u062f.<br \/>\nCMD [&#8220;npm&#8221;, &#8220;start&#8221;]: \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636\u06cc \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a start \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0639\u0645\u0648\u0644\u0627 \u0633\u0631\u0648\u0631 Node.js \u0634\u0645\u0627 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0633\u0627\u062e\u062a\u0646 \u0648 \u0627\u062c\u0631\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631: \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u06a9\u0631\u060c \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f: Bash docker build mern-backend .<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647 \u0646\u0627\u0645 mern-backend \u0628\u0631 \u0627\u0633\u0627\u0633 Dockerfile \u062f\u0631 \u0641\u0647\u0631\u0633\u062a \u0641\u0639\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u060c \u0627\u0632:<br \/>\n\u0636\u0631\u0628\u0647 \u0634\u062f\u06cc\u062f<br \/>\ndocker run &#8211;name=backend &#8211;network=mern -d -p 5050:5050 mern-backend<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u0635\u0648\u06cc\u0631 mern-backend \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u067e\u0648\u0631\u062a 5050 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0647 \u067e\u0648\u0631\u062a 5050 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0634\u0645\u0627 \u0646\u06af\u0627\u0634\u062a \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0637\u0646 Node.js \u062e\u0648\u062f \u062f\u0631 http:\/\/localhost:5050 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p>\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0633\u0627\u062e\u062a\u0647\u200c\u0627\u06cc\u0645 \u0648 \u067e\u0634\u062a\u0647 MERN \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0645\u0633\u062a\u0642\u0631 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u06a9\u0647 \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0646\u06cc\u0633\u062a\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0646\u0634\u0627\u0646 \u062f\u0647\u0645 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0645\u0647 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0648\u0627\u062d\u062f \u0648 \u062a\u0646\u0647\u0627 \u0628\u0627 \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.:<br \/>\n\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 docker-compose.yml \u0641\u0627\u06cc\u0644<\/p>\n<p>\u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0631\u06cc\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f\u060c a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f docker-compose.yml \u0628\u0631\u0627\u06cc \u0647\u0645\u0627\u0647\u0646\u06af \u06a9\u0631\u062f\u0646 \u0647\u0645\u0647 \u062e\u062f\u0645\u0627\u062a \u0628\u0627 \u0647\u0645.<\/p>\n<p>\u06cc\u0627\u0645\u0644<br \/>\n\u062e\u062f\u0645\u0627\u062a:<br \/>\n  \u067e\u06cc\u0634\u0627\u0646\u06cc:<br \/>\n    \u0633\u0627\u062e\u062a: .\/mern\/frontend<br \/>\n    \u067e\u0648\u0631\u062a \u0647\u0627:<br \/>\n      &#8211; &#8220;5173:5173&#8221;<\/p>\n<p>    \u0634\u0628\u06a9\u0647 \u0647\u0627:<br \/>\n      -mern_network<br \/>\n    \u0645\u062d\u06cc\u0637 \u0632\u06cc\u0633\u062a:<br \/>\n      REACT_APP_API_URL: http:\/\/backend:5050<\/p>\n<p>\u0628\u0627\u0637\u0646:<br \/>\n    \u0633\u0627\u062e\u062a: .\/mern\/backend<br \/>\n    \u067e\u0648\u0631\u062a \u0647\u0627:<br \/>\n      &#8211; &#8220;5050:5050&#8221;<br \/>\n    \u0634\u0628\u06a9\u0647 \u0647\u0627:<br \/>\n      -mern_network<br \/>\n    \u0645\u062d\u06cc\u0637 \u0632\u06cc\u0633\u062a:<br \/>\n      MONGO_URI: mongodb:\/\/mongo:27017\/mydatabase<\/p>\n<p>    \u0628\u0633\u062a\u06af\u06cc_\u0628\u0647:<br \/>\n      &#8211; mongodb<\/p>\n<p>mongodb:<br \/>\n    \u062a\u0635\u0648\u06cc\u0631: mongo: \u0622\u062e\u0631\u06cc\u0646<\/p>\n<p>    \u067e\u0648\u0631\u062a \u0647\u0627:<br \/>\n      &#8211; &#8220;27017:27017&#8221;<\/p>\n<p>    \u0634\u0628\u06a9\u0647 \u0647\u0627:<br \/>\n      -mern_network<br \/>\n    \u062d\u062c\u0645 \u0647\u0627:<br \/>\n      &#8211; mongo-data:\/data\/db  <\/p>\n<p>\u0634\u0628\u06a9\u0647 \u0647\u0627:<br \/>\n  mern_network:<br \/>\n    \u0631\u0627\u0646\u0646\u062f\u0647: \u067e\u0644<\/p>\n<p>\u062d\u062c\u0645 \u0647\u0627:<br \/>\n  \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0648\u0646\u06af\u0648:<br \/>\n    \u062f\u0631\u0627\u06cc\u0648\u0631: local # Persist MongoDB data \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc<\/p>\n<p>Docker Compose \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u067e\u0648\u0634\u0647 \u0627\u0635\u0644\u06cc \u067e\u0631\u0648\u0698\u0647\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<br \/>\n`bash<br \/>\ndocker-compose up -d<br \/>\n`<\/p>\n<p>\u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc MERN \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u062f \u06a9\u0647 \u062f\u0631 Docker \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f! <\/p>\n<p>\u0627\u06af\u0631 \u0628\u0647 \u0645\u0634\u06a9\u0644\u06cc \u0628\u0631\u062e\u0648\u0631\u062f \u06a9\u0631\u062f\u06cc\u062f \u06cc\u0627 \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0628\u0647 \u0645\u0646 \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062e\u062f\u0645\u0627\u062a \u062e\u0648\u062f:<\/p>\n<p>Frontend: http:\/\/localhost:3000<\/p>\n<p>Backend: http:\/\/localhost:5000<\/p>\n<p>MongoDB \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 backend \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a database:27017.<\/p>\n<p>\u0627\u062a\u0635\u0627\u0644 \u0628\u06cc\u0646 \u062e\u062f\u0645\u0627\u062a \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n\u062a\u0627\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647:<\/p>\n<p>\u0641\u0631\u0627\u0646\u062a \u0627\u0646\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0628\u0627\u0637\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f.<br \/>\n\u0628\u0627\u0637\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0647 MongoDB \u0645\u062a\u0635\u0644 \u0645\u06cc \u0634\u0648\u062f MONGO_URI.<\/p>\n<p>\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062a\u0648\u0642\u0641 \u0638\u0631\u0648\u0641\u060c \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f Ctrl + C.<br \/>\n\u0628\u0631\u0627\u06cc \u062a\u0648\u0642\u0641 \u0648 \u062d\u0630\u0641 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u060c \u0634\u0628\u06a9\u0647\u200c\u0647\u0627 \u0648 \u062d\u062c\u0645\u200c\u0647\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 docker-compose up\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<br \/>\n `bash<br \/>\n docker-compose down<br \/>\n `<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 3: \u062a\u0645\u06cc\u0632 \u06a9\u0631\u062f\u0646 \u0645\u062d\u06cc\u0637 Docker \u062e\u0648\u062f (\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc)<br \/>\n\u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06a9\u0627\u0631 \u0628\u0627 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc docker \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p>`bash<br \/>\ndocker image prune -f<br \/>\n`<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062a\u0645\u0627\u0645 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>`bash<br \/>\ndocker container prune -f<br \/>\n`<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>`bash<br \/>\ndocker network prune -f<br \/>\n`<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062a\u0645\u0627\u0645 \u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>`bash<br \/>\ndocker compose down \u2013volumes<br \/>\n`<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062d\u062c\u0645 \u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0641\u0636\u0627\u06cc \u062f\u06cc\u0633\u06a9 \u0631\u0627 \u0622\u0632\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>`bash<br \/>\ndocker system prune -f<br \/>\n`<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0647\u0645\u0647 \u0645\u0646\u0627\u0628\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u06cc\u06a9\u0628\u0627\u0631\u0647 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062a\u0648\u062c\u0647: \u067e\u0631\u0686\u0645 -f \u062d\u0630\u0641 \u0631\u0627 \u0628\u062f\u0648\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u0623\u06cc\u06cc\u062f \u0645\u062c\u0628\u0648\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u0632 \u0622\u0646 \u0628\u0627 \u0627\u062d\u062a\u06cc\u0627\u0637 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0632\u06cc\u0631\u0627 \u0628\u062f\u0648\u0646 \u062a\u0627\u06cc\u06cc\u062f \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0645\u0646\u0627\u0633\u0628\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631 \u0645\u062d\u06cc\u0637 Docker \u062e\u0648\u062f \u0631\u0627 \u062a\u0645\u06cc\u0632 \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646 \u0631\u0627 \u0645\u0631\u062a\u0628 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n<p>\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0636\u0627\u0641\u06cc<\/p>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc: \u062f\u0631 \u062a\u0648\u0644\u06cc\u062f \u0628\u0627\u06cc\u062f \u0627\u0632 Docker Secrets \u06cc\u0627 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc (.env) \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062d\u0633\u0627\u0633 \u0645\u0627\u0646\u0646\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647.<br \/>\n\u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc: \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062e\u062f\u0645\u0627\u062a (\u0645\u0627\u0646\u0646\u062f \u0628\u0627\u0637\u0646) \u0631\u0627 \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0646 \u062e\u062f\u0645\u0627\u062a \u062e\u0648\u062f \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f docker-compose.yml:<br \/>\n`yaml<br \/>\nbackend:<br \/>\n &#8230;<br \/>\n deploy:<br \/>\n   replicas: 3<br \/>\n`<\/p>\n<p>\u0633\u0627\u062e\u062a\u200c\u0647\u0627\u06cc \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc: \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u06cc\u0686\u06cc\u062f\u0647\u200c\u062a\u0631\u060c \u0627\u0632 \u0633\u0627\u062e\u062a\u200c\u0647\u0627\u06cc \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc \u062f\u0631 Dockerfiles \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0646\u062f\u0627\u0632\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 Docker \u062e\u0648\u062f \u0631\u0627 \u0628\u0647\u06cc\u0646\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n\u0628\u0627 \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \u0627\u06a9\u0646\u0648\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0633\u0647 \u0644\u0627\u06cc\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b Docker \u0634\u062f\u0647 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0642\u0633\u0645\u062a \u062c\u0644\u0648\u060c \u0628\u0627\u0637\u0646 \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0645\u062c\u0632\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0647\u0645\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 Docker Compose \u0628\u0647 \u0647\u0645 \u0645\u062a\u0635\u0644 \u0647\u0633\u062a\u0646\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc\u060c \u0627\u0634\u062a\u0631\u0627\u06a9\u200c\u06af\u0630\u0627\u0631\u06cc \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 MERN \u06a9\u0627\u0645\u0644 \u0627\u0633\u062a\u06a9\u060c \u0627\u0628\u062a\u062f\u0627 \u0647\u0631 \u062c\u0632\u0621 \u067e\u0634\u062a\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0648 \u0633\u067e\u0633 \u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0647 Docker Compose \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 1: \u0645\u062e\u0632\u0646 GitHub \u062e\u0648\u062f \u0631\u0627 \u06a9\u0644\u0648\u0646 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0628\u0631\u0648\u06cc\u062f<\/p>\n<ol>\n<li>\u0645\u062e\u0632\u0646 GitHub \u062e\u0648\u062f \u0631\u0627 \u06a9\u0644\u0648\u0646 \u06a9\u0646\u06cc\u062f: \u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u0645\u0627\u0646\u0646\u062f \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0627\u0632 \u0645\u062e\u0632\u0646 github \u062e\u0648\u062f \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f <\/li>\n<\/ol>\n<p><\/p>\n<p><code>Go to your terminal and run:<br \/>\n<\/code><code>bash<br \/>\n   git clone https:\/\/github.com\/Uwadon1\/dockerize-a-mern-stack-app.git<br \/>\n<\/code>&#8220;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ru47a3no5d6ie90c1bt.png\" alt=\"gitclone\" width=\"800\" height=\"467\" title=\"\"><\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u0628\u0627\u06cc\u062f \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062c\u062f\u06cc\u062f \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0628\u0631\u0648\u06cc\u062f<\/p>\n<p>\u0633\u06cc \u062f\u06cc dockerize-a-mern-stack-app<\/p>\n<ol>\n<li>\u0628\u0631\u0631\u0633\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc: \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u067e\u0648\u0634\u0647 \u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 \u062f\u0627\u0631\u0627\u06cc Frontend\/Web-tier\u060c Backend\/app-lier \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0633\u062a\u0646\u062f. \u0627\u06af\u0631 \u0686\u0646\u06cc\u0646 \u0627\u0633\u062a\u060c \u0645\u062c\u0645\u0648\u0639\u0647 \u0646\u0647\u0627\u06cc\u06cc \u0645\u0627 \u0628\u0647 \u0627\u062d\u062a\u0645\u0627\u0644 \u0632\u06cc\u0627\u062f \u0634\u0628\u06cc\u0647 \u0627\u06cc\u0646 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f\u060c \u0644\u0637\u0641\u0627\u064b \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0632\u06cc\u0631\u0627 \u0645\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 \u0628\u0627\u0637\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645: `<code><\/code><br \/>\nproject-directory\/ \u251c\u2500\u2500 frontend\/ \u251c\u2500\u2500 backend\/ \u251c\u2500\u2500 database\/ \u2514\u2500\u2500 docker-compose.yml (\u0627\u06cc\u0646 \u0628\u0639\u062f\u0627 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u062f \u0634\u062f)<\/li>\n<\/ol>\n<p>\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 .dockerignore \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 2: \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u067e\u0634\u062a\u0647 Dockerfiles \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<ol>\n<li>Frontend (React)\n<ul>\n<li>\u062d\u0631\u06a9\u062a \u0628\u0647 <code>frontend<\/code> \u067e\u0648\u0634\u0647 \u0648 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 <code>Dockerfile<\/code>:<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><code><\/code>Dockerfile<br \/>\n     # Dockerfile \u0628\u0631\u0627\u06cc frontend<\/p>\n<p>\u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0648\u0627\u0644\u062f\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n\u062a\u0648\u0636\u06cc\u062d\u0627\u062a: Dockerfile \u0628\u0631\u0627\u06cc \u0633\u0645\u062a \u0645\u0634\u062a\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u067e\u0634\u062a\u0647 MERN<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/step-by-step-guide-to-containerize-your-full-stack-mern-application-using-docker-compose-3a8f\/#%D8%A7%D8%B2_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1_%D8%B1%D8%B3%D9%85%DB%8C_%D8%A8%D9%87_%D8%B9%D9%86%D9%88%D8%A7%D9%86_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1_%D9%88%D8%A7%D9%84%D8%AF%DB%8C%D9%86_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0648\u0627\u0644\u062f\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/step-by-step-guide-to-containerize-your-full-stack-mern-application-using-docker-compose-3a8f\/#%D8%AF%D8%A7%DB%8C%D8%B1%DA%A9%D8%AA%D9%88%D8%B1%DB%8C_%DA%A9%D8%A7%D8%B1%DB%8C_%D8%B1%D8%A7_%D8%AA%D9%86%D8%B8%DB%8C%D9%85_%DA%A9%D9%86%DB%8C%D8%AF\" >\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/step-by-step-guide-to-containerize-your-full-stack-mern-application-using-docker-compose-3a8f\/#%D9%81%D8%A7%DB%8C%D9%84_%D8%B1%D8%A7_%D8%A7%D8%B2_%D9%87%D8%A7%D8%B3%D8%AA_%D8%AE%D9%88%D8%AF_%D8%AF%D8%B1_%D9%85%DA%A9%D8%A7%D9%86_%D9%81%D8%B9%D9%84%DB%8C_%D8%AE%D9%88%D8%AF_%DA%A9%D9%BE%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0632 \u0647\u0627\u0633\u062a \u062e\u0648\u062f \u062f\u0631 \u0645\u06a9\u0627\u0646 \u0641\u0639\u0644\u06cc \u062e\u0648\u062f \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/step-by-step-guide-to-containerize-your-full-stack-mern-application-using-docker-compose-3a8f\/#%D8%AF%D8%B3%D8%AA%D9%88%D8%B1_%D8%B1%D8%A7_%D8%AF%D8%B1_%D8%AF%D8%A7%D8%AE%D9%84_%D9%81%D8%A7%DB%8C%D9%84_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1%DB%8C_%D8%AE%D9%88%D8%AF_%D8%A7%D8%AC%D8%B1%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF\" >\u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 \u0633\u06cc\u0633\u062a\u0645 \u062a\u0635\u0648\u06cc\u0631\u06cc \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/step-by-step-guide-to-containerize-your-full-stack-mern-application-using-docker-compose-3a8f\/#%D8%A8%D9%87_Docker_%D8%A7%D8%B7%D9%84%D8%A7%D8%B9_%D8%AF%D9%87%DB%8C%D8%AF_%DA%A9%D9%87_%DA%A9%D8%A7%D9%86%D8%AA%DB%8C%D9%86%D8%B1_%D8%AF%D8%B1_%D8%AD%D8%A7%D9%84_%DA%AF%D9%88%D8%B4_%D8%AF%D8%A7%D8%AF%D9%86_%D8%A8%D9%87_%D9%BE%D9%88%D8%B1%D8%AA_%D9%85%D8%B4%D8%AE%D8%B5_%D8%B4%D8%AF%D9%87_%D8%AF%D8%B1_%D8%B2%D9%85%D8%A7%D9%86_%D8%A7%D8%AC%D8%B1%D8%A7_%D8%A7%D8%B3%D8%AA\" >\u0628\u0647 Docker \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631 \u062d\u0627\u0644 \u06af\u0648\u0634 \u062f\u0627\u062f\u0646 \u0628\u0647 \u067e\u0648\u0631\u062a \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/step-by-step-guide-to-containerize-your-full-stack-mern-application-using-docker-compose-3a8f\/#%D8%A8%D9%82%DB%8C%D9%87_%DA%A9%D8%AF_%D9%85%D9%86%D8%A8%D8%B9_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%AE%D9%88%D8%AF_%D8%B1%D8%A7_%D8%A7%D8%B2_%D9%85%DB%8C%D8%B2%D8%A8%D8%A7%D9%86_%D8%AE%D9%88%D8%AF_%D8%AF%D8%B1_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%D9%81%D8%A7%DB%8C%D9%84_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1%DB%8C_%D8%AE%D9%88%D8%AF_%DA%A9%D9%BE%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0628\u0642\u06cc\u0647 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062e\u0648\u062f \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc \u062e\u0648\u062f \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/step-by-step-guide-to-containerize-your-full-stack-mern-application-using-docker-compose-3a8f\/#%D8%AF%D8%B3%D8%AA%D9%88%D8%B1_%D9%85%D8%B4%D8%AE%D8%B5_%D8%B4%D8%AF%D9%87_%D8%B1%D8%A7_%D8%AF%D8%B1_%D8%AF%D8%A7%D8%AE%D9%84_%DA%A9%D8%A7%D9%86%D8%AA%DB%8C%D9%86%D8%B1_%D8%A7%D8%AC%D8%B1%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF\" >\u062f\u0633\u062a\u0648\u0631 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B2_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1_%D8%B1%D8%B3%D9%85%DB%8C_%D8%A8%D9%87_%D8%B9%D9%86%D9%88%D8%A7%D9%86_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1_%D9%88%D8%A7%D9%84%D8%AF%DB%8C%D9%86_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0648\u0627\u0644\u062f\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>FROM node:18.9.1<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AF%D8%A7%DB%8C%D8%B1%DA%A9%D8%AA%D9%88%D8%B1%DB%8C_%DA%A9%D8%A7%D8%B1%DB%8C_%D8%B1%D8%A7_%D8%AA%D9%86%D8%B8%DB%8C%D9%85_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WORKDIR \/ \u0628\u0631\u0646\u0627\u0645\u0647<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%81%D8%A7%DB%8C%D9%84_%D8%B1%D8%A7_%D8%A7%D8%B2_%D9%87%D8%A7%D8%B3%D8%AA_%D8%AE%D9%88%D8%AF_%D8%AF%D8%B1_%D9%85%DA%A9%D8%A7%D9%86_%D9%81%D8%B9%D9%84%DB%8C_%D8%AE%D9%88%D8%AF_%DA%A9%D9%BE%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0632 \u0647\u0627\u0633\u062a \u062e\u0648\u062f \u062f\u0631 \u0645\u06a9\u0627\u0646 \u0641\u0639\u0644\u06cc \u062e\u0648\u062f \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>COPY package.json .<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B3%D8%AA%D9%88%D8%B1_%D8%B1%D8%A7_%D8%AF%D8%B1_%D8%AF%D8%A7%D8%AE%D9%84_%D9%81%D8%A7%DB%8C%D9%84_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1%DB%8C_%D8%AE%D9%88%D8%AF_%D8%A7%D8%AC%D8%B1%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 \u0633\u06cc\u0633\u062a\u0645 \u062a\u0635\u0648\u06cc\u0631\u06cc \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0646\u0635\u0628 npm \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D9%87_Docker_%D8%A7%D8%B7%D9%84%D8%A7%D8%B9_%D8%AF%D9%87%DB%8C%D8%AF_%DA%A9%D9%87_%DA%A9%D8%A7%D9%86%D8%AA%DB%8C%D9%86%D8%B1_%D8%AF%D8%B1_%D8%AD%D8%A7%D9%84_%DA%AF%D9%88%D8%B4_%D8%AF%D8%A7%D8%AF%D9%86_%D8%A8%D9%87_%D9%BE%D9%88%D8%B1%D8%AA_%D9%85%D8%B4%D8%AE%D8%B5_%D8%B4%D8%AF%D9%87_%D8%AF%D8%B1_%D8%B2%D9%85%D8%A7%D9%86_%D8%A7%D8%AC%D8%B1%D8%A7_%D8%A7%D8%B3%D8%AA\"><\/span>\n<p>  \u0628\u0647 Docker \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631 \u062d\u0627\u0644 \u06af\u0648\u0634 \u062f\u0627\u062f\u0646 \u0628\u0647 \u067e\u0648\u0631\u062a \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>EXPOSE 5173<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D9%82%DB%8C%D9%87_%DA%A9%D8%AF_%D9%85%D9%86%D8%A8%D8%B9_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%AE%D9%88%D8%AF_%D8%B1%D8%A7_%D8%A7%D8%B2_%D9%85%DB%8C%D8%B2%D8%A8%D8%A7%D9%86_%D8%AE%D9%88%D8%AF_%D8%AF%D8%B1_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%D9%81%D8%A7%DB%8C%D9%84_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1%DB%8C_%D8%AE%D9%88%D8%AF_%DA%A9%D9%BE%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0628\u0642\u06cc\u0647 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062e\u0648\u062f \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc \u062e\u0648\u062f \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f. .<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B3%D8%AA%D9%88%D8%B1_%D9%85%D8%B4%D8%AE%D8%B5_%D8%B4%D8%AF%D9%87_%D8%B1%D8%A7_%D8%AF%D8%B1_%D8%AF%D8%A7%D8%AE%D9%84_%DA%A9%D8%A7%D9%86%D8%AA%DB%8C%D9%86%D8%B1_%D8%A7%D8%AC%D8%B1%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u062f\u0633\u062a\u0648\u0631 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>CMD [&#8220;npm&#8221;, &#8220;run&#8221;, &#8220;dev&#8221;]\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwd7jrhdi9ylp7laib7uq.png\" alt=\"Frontend Dockerfile\" width=\"800\" height=\"528\" title=\"\"><\/p>\n<ul>\n<li>\u062a\u0648\u0636\u06cc\u062d: \u0627\u06cc\u0646 Dockerfile \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc \u06a9\u0646\u062f\u060c \u06a9\u062f \u0641\u0631\u0627\u0646\u062a \u0627\u0646\u062f \u0631\u0627 \u0645\u06cc \u0633\u0627\u0632\u062f \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>serve<\/code> \u0628\u0631\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 Dockerfile Breakdown \u0627\u06cc\u0646 Dockerfile \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062d\u06cc\u0637 Node.js \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0645\u062d\u0641\u0638\u0647 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 React frontend \u0645\u06cc \u0633\u0627\u0632\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0631 \u062e\u0637 \u0631\u0627 \u0628\u0634\u06a9\u0646\u06cc\u0645:\n<ol>\n<li>FROM node:18.9.1: \u0627\u06cc\u0646 \u062e\u0637 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0627\u06cc\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f. node:18.9.1 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0627 \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc Node.js 18.9.1 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/li>\n<li>WORKDIR \/app: \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u062f\u0631\u0648\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0631\u0648\u06cc \/app \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0639\u062f\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<li>COPY package.json .: \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062f\u0631 \u067e\u0648\u0634\u0647 \/app \u062f\u0631 \u062f\u0627\u062e\u0644 \u0638\u0631\u0641 \u06a9\u067e\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0634\u0627\u0645\u0644 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u062a.<\/li>\n<li>RUN npm install: \u062f\u0633\u062a\u0648\u0631 npm install \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u062a\u0645\u0627\u0645 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0641\u0647\u0631\u0633\u062a \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u062f.<\/li>\n<li>EXPOSE 5173: \u0628\u0647 Docker \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0647 \u062f\u0631\u06af\u0627\u0647 5173 \u06af\u0648\u0634 \u0645\u06cc \u062f\u0647\u062f. \u0627\u06cc\u0646 \u067e\u0648\u0631\u062a \u0627\u063a\u0644\u0628 \u062a\u0648\u0633\u0637 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0645\u0627\u0646\u0646\u062f Create React App \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<li>\u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f. .: \u0647\u0645\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc \u0628\u0627\u0642\u06cc\u0645\u0627\u0646\u062f\u0647 \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062f\u0631 \u067e\u0648\u0634\u0647 \/app \u062f\u0631 \u062f\u0627\u062e\u0644 \u0638\u0631\u0641 \u06a9\u067e\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0634\u0627\u0645\u0644 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 React \u0634\u0645\u0627 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<li>CMD [&#8220;npm&#8221;, &#8220;run&#8221;, &#8220;dev&#8221;]: \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636\u06cc \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a dev \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 React \u0634\u0645\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p>\u0633\u0627\u062e\u062a \u0648 \u0627\u062c\u0631\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631: \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u06a9\u0631\u060c \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<br \/>\n\u0636\u0631\u0628\u0647 \u0634\u062f\u06cc\u062f<br \/>\ndocker build -t mern-frontend .<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647 \u0646\u0627\u0645 mern-frontend \u0628\u0631 \u0627\u0633\u0627\u0633 Dockerfile \u062f\u0631 \u0641\u0647\u0631\u0633\u062a \u0641\u0639\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f. \u062a\u0648\u062c\u0647: \u0644\u0637\u0641\u0627\u064b \u0642\u0628\u0644 \u0627\u0632 \u0633\u0627\u062e\u062a\u0646 \u062a\u0635\u0648\u06cc\u0631 docker \u062e\u0648\u062f \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u062f\u0633\u06a9\u062a\u0627\u067e docker \u0634\u0645\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f.<br \/>\n\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0635\u0648\u06cc\u0631 \u062c\u0644\u0648\u06cc\u06cc \u0645\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhfk80xfxbpudgas5osy.png\" alt=\"\u0633\u0627\u062e\u062a \u062a\u0635\u0648\u06cc\u0631 Frontend\" width=\"800\" height=\"347\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyuj57p6vwdhx3mul6dhx.png\" alt=\"\u0633\u0627\u062e\u062a \u062a\u0635\u0648\u06cc\u0631 Frontend Dockerdesktop\" width=\"800\" height=\"306\" title=\"\"><\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0645\u0627 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0634\u0628\u06a9\u0647 docker \u062e\u0648\u062f\u060c \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<br \/>\n\u0636\u0631\u0628\u0647 \u0634\u062f\u06cc\u062f<br \/>\n\u0634\u0628\u06a9\u0647 docker \u0627\u06cc\u062c\u0627\u062f mern<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u0627 \u0628\u0627\u06cc\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062e\u0648\u062f \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062e\u0648\u062f \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<br \/>\n\u0636\u0631\u0628\u0647 \u0634\u062f\u06cc\u062f<br \/>\ndocker run &#8211;name=frontend &#8211;network=mern -d -p 5173:5173 mern-frontend<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u0635\u0648\u06cc\u0631 mern-frontend \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u067e\u0648\u0631\u062a 5173 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0647 \u067e\u0648\u0631\u062a 5173 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0634\u0645\u0627 \u0646\u06af\u0627\u0634\u062a \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 React \u062e\u0648\u062f \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 http:\/\/localhost:5173 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd4bdb4fdmqfkpgy1fs3q.png\" alt=\"\u0628\u0631\u0646\u0627\u0645\u0647 Frontend\" width=\"800\" height=\"348\" title=\"\"><\/p>\n<ol>\n<li>Backend (Node.js &#038; Express)<\/li>\n<\/ol>\n<p>\u0628\u0647\u062a\u0631\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0645\u06cc\u0634\u0647 \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u062e\u0637\u0627 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f. <br \/>\n\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 (MongoDB)<\/p>\n<ul>\n<li>\u0628\u0631\u0627\u06cc MongoDB\u060c \u0634\u0645\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 Dockerfile \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0632\u06cc\u0631\u0627 MongoDB \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc \u062f\u0631 Docker Hub \u062f\u0627\u0631\u062f. <\/li>\n<\/ul>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f\u060c \u0627\u0632:<br \/>\n\u0636\u0631\u0628\u0647 \u0634\u062f\u06cc\u062f<br \/>\ndocker run &#8211;name=mongodb &#8211;network=mern -d -p 27017:27017 -v ~\/opt\/data:data\/db mongo:latest<\/p>\n<ul>\n<li>\n<p>\u062d\u0631\u06a9\u062a \u0628\u0647 <code>backend<\/code> \u067e\u0648\u0634\u0647 \u0648 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 <code>Dockerfile<\/code>:<\/p>\n<p>`<code><\/code>dockerfile<br \/>\n # Dockerfile \u0628\u0631\u0627\u06cc Backend<\/p>\n<\/li>\n<\/ul>\n<p>FROM node:18.9.1<\/p>\n<p>WORKDIR \/ \u0628\u0631\u0646\u0627\u0645\u0647<\/p>\n<p>COPY package.json .<\/p>\n<p>\u0646\u0635\u0628 npm \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f. .<\/p>\n<p>EXPOSE 5050<\/p>\n<p>CMD [&#8220;npm&#8221;, &#8220;start&#8221;]\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ofxz9n36o0dso4j4cl1.png\" alt=\"Backend Dockerfile\" width=\"800\" height=\"346\" title=\"\"><\/p>\n<ul>\n<li>\u062a\u0648\u0636\u06cc\u062d: \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0627\u0637\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u06af\u0648\u0634 \u062f\u0627\u062f\u0646 \u0628\u0647 \u067e\u0648\u0631\u062a 5000 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f <code>npm start<\/code> \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 Dockerfile Breakdown \u0628\u0631\u0627\u06cc Backend \u0627\u06cc\u0646 Dockerfile \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Backend Node.js \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0631 \u062e\u0637 \u0631\u0627 \u0628\u0634\u06a9\u0646\u06cc\u0645:\n<ol>\n<li>FROM node:18.9.1: \u0627\u06cc\u0646 \u062e\u0637 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0627\u06cc\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f. node:18.9.1 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0627 \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc Node.js 18.9.1 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/li>\n<li>WORKDIR \/app: \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u062f\u0631\u0648\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0631\u0648\u06cc \/app \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0639\u062f\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<li>COPY package.json .: \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062f\u0631 \u067e\u0648\u0634\u0647 \/app \u062f\u0631 \u062f\u0627\u062e\u0644 \u0638\u0631\u0641 \u06a9\u067e\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0634\u0627\u0645\u0644 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u062a.<\/li>\n<li>RUN npm install: \u062f\u0633\u062a\u0648\u0631 npm install \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u062a\u0645\u0627\u0645 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0641\u0647\u0631\u0633\u062a \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u062f.<\/li>\n<li>\u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f. .: \u0647\u0645\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc \u0628\u0627\u0642\u06cc\u0645\u0627\u0646\u062f\u0647 \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062f\u0631 \u067e\u0648\u0634\u0647 \/app \u062f\u0631 \u062f\u0627\u062e\u0644 \u0638\u0631\u0641 \u06a9\u067e\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0634\u0627\u0645\u0644 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc Node.js \u0634\u0645\u0627 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<li>EXPOSE 5050: \u0628\u0647 Docker \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0647 \u067e\u0648\u0631\u062a 5050 \u06af\u0648\u0634 \u0645\u06cc \u062f\u0647\u062f. \u0627\u06cc\u0646 \u067e\u0648\u0631\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0633\u0631\u0648\u0631 Node.js \u0634\u0645\u0627 \u0628\u0647 \u0622\u0646 \u06af\u0648\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<li>CMD [&#8220;npm&#8221;, &#8220;start&#8221;]: \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636\u06cc \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a start \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0639\u0645\u0648\u0644\u0627 \u0633\u0631\u0648\u0631 Node.js \u0634\u0645\u0627 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0633\u0627\u062e\u062a\u0646 \u0648 \u0627\u062c\u0631\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631: \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u06a9\u0631\u060c \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f: Bash docker build mern-backend .<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647 \u0646\u0627\u0645 mern-backend \u0628\u0631 \u0627\u0633\u0627\u0633 Dockerfile \u062f\u0631 \u0641\u0647\u0631\u0633\u062a \u0641\u0639\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9tz9wfxjfkc4jwpyqjjs.png\" alt=\"\u0633\u0627\u062e\u062a \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627\u0637\u0646\" width=\"800\" height=\"340\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5qn7dlrczu0qnysom51.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631 Backend \u0633\u0627\u062e\u062a DockerDesktop\" width=\"800\" height=\"394\" title=\"\"><\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u060c \u0627\u0632:<br \/>\n\u0636\u0631\u0628\u0647 \u0634\u062f\u06cc\u062f<br \/>\ndocker run &#8211;name=backend &#8211;network=mern -d -p 5050:5050 mern-backend<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u0635\u0648\u06cc\u0631 mern-backend \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u067e\u0648\u0631\u062a 5050 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0647 \u067e\u0648\u0631\u062a 5050 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0634\u0645\u0627 \u0646\u06af\u0627\u0634\u062a \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0637\u0646 Node.js \u062e\u0648\u062f \u062f\u0631 http:\/\/localhost:5050 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8q4deerp3nn1i6vlvkh.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"800\" height=\"330\" title=\"\"><\/p>\n<p>\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0633\u0627\u062e\u062a\u0647\u200c\u0627\u06cc\u0645 \u0648 \u067e\u0634\u062a\u0647 MERN \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0645\u0633\u062a\u0642\u0631 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u06a9\u0647 \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0646\u06cc\u0633\u062a\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0646\u0634\u0627\u0646 \u062f\u0647\u0645 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0645\u0647 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0648\u0627\u062d\u062f \u0648 \u062a\u0646\u0647\u0627 \u0628\u0627 \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.:<br \/>\n\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 <code>docker-compose.yml<\/code> \u0641\u0627\u06cc\u0644<\/p>\n<p>\u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0631\u06cc\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f\u060c a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>docker-compose.yml<\/code> \u0628\u0631\u0627\u06cc \u0647\u0645\u0627\u0647\u0646\u06af \u06a9\u0631\u062f\u0646 \u0647\u0645\u0647 \u062e\u062f\u0645\u0627\u062a \u0628\u0627 \u0647\u0645.<\/p>\n<p><code><\/code>\u06cc\u0627\u0645\u0644<br \/>\n\u062e\u062f\u0645\u0627\u062a:<br \/>\n  \u067e\u06cc\u0634\u0627\u0646\u06cc:<br \/>\n    \u0633\u0627\u062e\u062a: .\/mern\/frontend<br \/>\n    \u067e\u0648\u0631\u062a \u0647\u0627:<br \/>\n      &#8211; &#8220;5173:5173&#8221;<\/p>\n<p>    \u0634\u0628\u06a9\u0647 \u0647\u0627:<br \/>\n      -mern_network<br \/>\n    \u0645\u062d\u06cc\u0637 \u0632\u06cc\u0633\u062a:<br \/>\n      REACT_APP_API_URL: http:\/\/backend:5050<\/p>\n<p>\u0628\u0627\u0637\u0646:<br \/>\n    \u0633\u0627\u062e\u062a: .\/mern\/backend<br \/>\n    \u067e\u0648\u0631\u062a \u0647\u0627:<br \/>\n      &#8211; &#8220;5050:5050&#8221;<br \/>\n    \u0634\u0628\u06a9\u0647 \u0647\u0627:<br \/>\n      -mern_network<br \/>\n    \u0645\u062d\u06cc\u0637 \u0632\u06cc\u0633\u062a:<br \/>\n      MONGO_URI: mongodb:\/\/mongo:27017\/mydatabase<\/p>\n<p>    \u0628\u0633\u062a\u06af\u06cc_\u0628\u0647:<br \/>\n      &#8211; mongodb<\/p>\n<p>mongodb:<br \/>\n    \u062a\u0635\u0648\u06cc\u0631: mongo: \u0622\u062e\u0631\u06cc\u0646<\/p>\n<p>    \u067e\u0648\u0631\u062a \u0647\u0627:<br \/>\n      &#8211; &#8220;27017:27017&#8221;<\/p>\n<p>    \u0634\u0628\u06a9\u0647 \u0647\u0627:<br \/>\n      -mern_network<br \/>\n    \u062d\u062c\u0645 \u0647\u0627:<br \/>\n      &#8211; mongo-data:\/data\/db  <\/p>\n<p>\u0634\u0628\u06a9\u0647 \u0647\u0627:<br \/>\n  mern_network:<br \/>\n    \u0631\u0627\u0646\u0646\u062f\u0647: \u067e\u0644<\/p>\n<p>\u062d\u062c\u0645 \u0647\u0627:<br \/>\n  \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0648\u0646\u06af\u0648:<br \/>\n    \u062f\u0631\u0627\u06cc\u0648\u0631: local # Persist MongoDB data \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xrz2f76xgszobv8k2uq.png\" alt=\"Docker Compose\" width=\"800\" height=\"341\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtv97xq3f0zt4igompzd.png\" alt=\"Docker Compose2\" width=\"800\" height=\"281\" title=\"\"><\/p>\n<p>Docker Compose \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<ol>\n<li>\u062f\u0631 \u067e\u0648\u0634\u0647 \u0627\u0635\u0644\u06cc \u067e\u0631\u0648\u0698\u0647\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<br \/>\n<code>`bash<br \/>\ndocker-compose up -d<br \/>\n`<\/code>\n<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwo8imrl3ufruuie3718.png\" alt=\"Docker Compose up\" width=\"800\" height=\"484\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fthi9evbrcr8ff84rl67m.png\" alt=\"Docker Compose up2\" width=\"800\" height=\"507\" title=\"\"><\/p>\n<p>\u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc MERN \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u062f \u06a9\u0647 \u062f\u0631 Docker \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f! <\/p>\n<p>\u0627\u06af\u0631 \u0628\u0647 \u0645\u0634\u06a9\u0644\u06cc \u0628\u0631\u062e\u0648\u0631\u062f \u06a9\u0631\u062f\u06cc\u062f \u06cc\u0627 \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0628\u0647 \u0645\u0646 \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u062f.<\/p>\n<ol>\n<li>\u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062e\u062f\u0645\u0627\u062a \u062e\u0648\u062f:\n<ul>\n<li>Frontend: <code>http:\/\/localhost:3000<\/code>\n<\/li>\n<li>Backend: <code>http:\/\/localhost:5000<\/code>\n<\/li>\n<li>MongoDB \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 backend \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a <code>database:27017<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>\u0627\u062a\u0635\u0627\u0644 \u0628\u06cc\u0646 \u062e\u062f\u0645\u0627\u062a \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n\u062a\u0627\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647:<\/p>\n<ul>\n<li>\u0641\u0631\u0627\u0646\u062a \u0627\u0646\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0628\u0627\u0637\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f.<\/li>\n<li>\u0628\u0627\u0637\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0647 MongoDB \u0645\u062a\u0635\u0644 \u0645\u06cc \u0634\u0648\u062f <code>MONGO_URI<\/code>.<\/li>\n<\/ul>\n<p>\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0646\u06cc\u062f<\/p>\n<ul>\n<li>\u0628\u0631\u0627\u06cc \u062a\u0648\u0642\u0641 \u0638\u0631\u0648\u0641\u060c \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f <code>Ctrl + C<\/code>.<\/li>\n<li>\u0628\u0631\u0627\u06cc \u062a\u0648\u0642\u0641 \u0648 \u062d\u0630\u0641 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u060c \u0634\u0628\u06a9\u0647\u200c\u0647\u0627 \u0648 \u062d\u062c\u0645\u200c\u0647\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 <code>docker-compose up<\/code>\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<br \/>\n <code>`bash<br \/>\n docker-compose down<br \/>\n `<\/code>\n<\/li>\n<\/ul>\n<p>\u0645\u0631\u062d\u0644\u0647 3: \u062a\u0645\u06cc\u0632 \u06a9\u0631\u062f\u0646 \u0645\u062d\u06cc\u0637 Docker \u062e\u0648\u062f (\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc)<br \/>\n\u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06a9\u0627\u0631 \u0628\u0627 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc docker \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p><code>`bash<br \/>\ndocker image prune -f<br \/>\n`<\/code><\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062a\u0645\u0627\u0645 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><code>`bash<br \/>\ndocker container prune -f<br \/>\n`<\/code><\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><code>`bash<br \/>\ndocker network prune -f<br \/>\n`<\/code><\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062a\u0645\u0627\u0645 \u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><code>`bash<br \/>\ndocker compose down \u2013volumes<br \/>\n`<\/code><\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062d\u062c\u0645 \u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0641\u0636\u0627\u06cc \u062f\u06cc\u0633\u06a9 \u0631\u0627 \u0622\u0632\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><code>`bash<br \/>\ndocker system prune -f<br \/>\n`<\/code><\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0647\u0645\u0647 \u0645\u0646\u0627\u0628\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u06cc\u06a9\u0628\u0627\u0631\u0647 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062a\u0648\u062c\u0647: \u067e\u0631\u0686\u0645 -f \u062d\u0630\u0641 \u0631\u0627 \u0628\u062f\u0648\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u0623\u06cc\u06cc\u062f \u0645\u062c\u0628\u0648\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u0632 \u0622\u0646 \u0628\u0627 \u0627\u062d\u062a\u06cc\u0627\u0637 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0632\u06cc\u0631\u0627 \u0628\u062f\u0648\u0646 \u062a\u0627\u06cc\u06cc\u062f \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0645\u0646\u0627\u0633\u0628\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631 \u0645\u062d\u06cc\u0637 Docker \u062e\u0648\u062f \u0631\u0627 \u062a\u0645\u06cc\u0632 \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646 \u0631\u0627 \u0645\u0631\u062a\u0628 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n<p>\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0636\u0627\u0641\u06cc<\/p>\n<ul>\n<li>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc: \u062f\u0631 \u062a\u0648\u0644\u06cc\u062f \u0628\u0627\u06cc\u062f \u0627\u0632 Docker Secrets \u06cc\u0627 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc (<code>.env<\/code>) \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062d\u0633\u0627\u0633 \u0645\u0627\u0646\u0646\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647.<\/li>\n<li>\u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc: \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062e\u062f\u0645\u0627\u062a (\u0645\u0627\u0646\u0646\u062f \u0628\u0627\u0637\u0646) \u0631\u0627 \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0646 \u062e\u062f\u0645\u0627\u062a \u062e\u0648\u062f \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f <code>docker-compose.yml<\/code>:<br \/>\n<code>`yaml<br \/>\nbackend:<br \/>\n ...<br \/>\n deploy:<br \/>\n   replicas: 3<br \/>\n`<\/code>\n<\/li>\n<li>\u0633\u0627\u062e\u062a\u200c\u0647\u0627\u06cc \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc: \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u06cc\u0686\u06cc\u062f\u0647\u200c\u062a\u0631\u060c \u0627\u0632 \u0633\u0627\u062e\u062a\u200c\u0647\u0627\u06cc \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc \u062f\u0631 Dockerfiles \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0646\u062f\u0627\u0632\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 Docker \u062e\u0648\u062f \u0631\u0627 \u0628\u0647\u06cc\u0646\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n\u0628\u0627 \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \u0627\u06a9\u0646\u0648\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0633\u0647 \u0644\u0627\u06cc\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b Docker \u0634\u062f\u0647 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0642\u0633\u0645\u062a \u062c\u0644\u0648\u060c \u0628\u0627\u0637\u0646 \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0645\u062c\u0632\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0647\u0645\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 Docker Compose \u0628\u0647 \u0647\u0645 \u0645\u062a\u0635\u0644 \u0647\u0633\u062a\u0646\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc\u060c \u0627\u0634\u062a\u0631\u0627\u06a9\u200c\u06af\u0630\u0627\u0631\u06cc \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 MERN \u06a9\u0627\u0645\u0644 \u0627\u0633\u062a\u06a9\u060c \u0627\u0628\u062a\u062f\u0627 \u0647\u0631 \u062c\u0632\u0621 \u067e\u0634\u062a\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0648 \u0633\u067e\u0633 \u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0647 Docker Compose \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0645\u0631\u062d\u0644\u0647 1: \u0645\u062e\u0632\u0646 GitHub \u062e\u0648\u062f \u0631\u0627 \u06a9\u0644\u0648\u0646 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0628\u0631\u0648\u06cc\u062f \u0645\u062e\u0632\u0646 GitHub &hellip;<\/p>\n","protected":false},"author":2,"featured_media":82702,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-82701","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/82701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=82701"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/82701\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/82702"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=82701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=82701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=82701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}