{"id":80244,"date":"2024-10-15T15:19:08","date_gmt":"2024-10-15T11:49:08","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/"},"modified":"2024-10-15T15:19:08","modified_gmt":"2024-10-15T11:49:08","slug":"using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/","title":{"rendered":"\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Dockerfile \u0648 Docker Compose \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc \u0628\u0627 Node.js\u060c MongoDB \u0648 MongoExpress"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang <\/p>\n<p>  \u0645\u0642\u062f\u0645\u0647<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0628\u0627 Node.js\u060c MongoDB \u0648 MongoExpress \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. Docker \u0627\u0628\u0632\u0627\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u0622\u0646\u0647\u0627 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0627\u0632 \u062b\u0628\u0627\u062a \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p>\u0647\u062f\u0641 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u062f\u0647 Node.js \u0645\u062a\u0635\u0644 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 MongoDB \u0631\u0627 \u0628\u0686\u0631\u062e\u0627\u0646\u06cc\u062f. \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 MongoExpress \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0633\u0628\u06a9 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0648\u0628 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0647\u0645\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u0646\u062f. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0634\u0645\u0627 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u06a9\u0627\u0645\u0644\u0627 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a \u06a9\u0647 \u062a\u0646\u0647\u0627 \u0628\u0627 \u0686\u0646\u062f \u062f\u0633\u062a\u0648\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0631\u062f \u0648 \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u062f.<\/p>\n<p>\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627\u0642\u0628\u0644 \u0627\u0632 \u063a\u0648\u0627\u0635\u06cc\u060c \u0644\u0637\u0641\u0627\u064b \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f:<\/p>\n<p>Docker: \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f Docker \u0631\u0627 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u0648 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<br \/>\n\u062f\u0631\u06a9 \u0627\u0648\u0644\u06cc\u0647 Node.js \u0648 MongoDB.<br \/>\n\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 EC2 Cloud \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u063a\u06cc\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648<\/p>\n<p>\u0627\u06af\u0631 \u062f\u0631 Docker \u062a\u0627\u0632\u0647 \u06a9\u0627\u0631 \u0647\u0633\u062a\u06cc\u062f\u060c \u062c\u0627\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u0646\u06cc\u0633\u062a! \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0636\u0631\u0648\u0631\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062d\u06cc\u0637 \u062e\u0648\u062f \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u06cc\u062f\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<\/p>\n<p>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0631\u0627\u06cc Docker\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 mongodb \u0648 \u062a\u0635\u0648\u06cc\u0631 mongo express UI \u0631\u0627 \u0627\u0632 dockerhub \u0628\u06a9\u0634\u06cc\u0645.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f docker \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645 \u0627\u0645\u0627 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0644\u06cc\u0633\u062a \u0647\u0627\u06cc \u0628\u0633\u062a\u0647 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u0645<\/p>\n<p>sudo apt update<br \/>\nsudo apt upgrade -y<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>Dependencies \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f\u0628\u0633\u062a\u0647 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647 apt \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u0627\u0632 \u0645\u062e\u0627\u0632\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 HTTPS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f:<\/p>\n<p>sudo apt install -y apt-transport-https ca-certificates curl software-properties-common<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06a9\u0644\u06cc\u062f \u0631\u0633\u0645\u06cc GPG Docker \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo gpg &#8211;dearmor -o \/usr\/share\/keyrings\/docker-archive-keyring.gpg<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u062e\u0632\u0646 Docker \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f\u0645\u062e\u0632\u0646 Docker \u0631\u0627 \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0645\u0646\u0627\u0633\u0628 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>echo \\<br \/>\n  &#8220;deb [arch=$(dpkg &#8211;print-architecture) signed-by=\/usr\/share\/keyrings\/docker-archive-keyring.gpg] https:\/\/download.docker.com\/linux\/ubuntu \\<br \/>\n  $(lsb_release -cs) stable&#8221; | sudo tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>Docker Engine \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<p>sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0622\u0646 \u062f\u0627\u06a9\u0631 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0632\u0645\u0627\u0646 \u0622\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0628\u06a9\u0634\u062f\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u062a\u0635\u0648\u06cc\u0631 mongodb \u0631\u0627 \u0628\u06a9\u0634\u06cc\u0645<\/p>\n<p>\u062f\u0633\u062a\u0648\u0631 docker run \u062f\u0648 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f\u060c \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u0645\u06cc \u06a9\u0634\u062f \u0648 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0622\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0645\u06cc \u06af\u0648\u06cc\u06cc\u0645. \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0646\u0645\u0648\u0646\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0633\u062a.<\/p>\n<p>\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker \u062f\u0631 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0627\u06cc\u0632\u0648\u0644\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u0646\u062f \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0627\u06af\u0631 \u0645\u0627 \u062f\u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0622\u0646\u0647\u0627 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u0647\u0645 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f\u060c \u0628\u0627\u06cc\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645.<\/p>\n<p>  \u062a\u0648\u0636\u06cc\u062d \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a:<\/p>\n<p>  docker run:<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062c\u062f\u06cc\u062f \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 Docker \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  -d:<\/p>\n<p>\u0627\u06cc\u0646 -d \u067e\u0631\u0686\u0645 \u0628\u0647 \u062f\u0627\u06a9\u0631 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u062c\u062f\u0627\u0634\u062f\u0647 (\u062f\u0631 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647) \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>  -p 27017:27017:<\/p>\n<p>\u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u067e\u0648\u0631\u062a \u0631\u0627 \u062a\u0631\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f 27017 \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0628\u0647 \u067e\u0648\u0631\u062a 27017 \u062f\u0631 \u0638\u0631\u0641 MongoDB \u0627\u0632 \u0627\u06cc\u0646 \u067e\u0648\u0631\u062a \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0646\u062d\u0648 \u0627\u0633\u062a host_port:container_port\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 MongoDB \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f localhost:27017 \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646<\/p>\n<p>  &#8211;network mongo-network:<\/p>\n<p>\u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 Docker \u0628\u0647 \u0646\u0627\u0645 \u0645\u062a\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f mongo-network. \u0627\u06cc\u0646 \u0634\u0628\u06a9\u0647 \u0628\u0647 \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f. <\/p>\n<p>\u0627\u06af\u0631 \u0634\u0628\u06a9\u0647 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f docker network create mongo-network.<\/p>\n<p>  &#8211;name mongodb:<\/p>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0646\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0635 \u0645\u06cc \u062f\u0647\u062f (mongodb) \u0628\u0647 \u0638\u0631\u0641 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627. \u0628\u0647 \u0634\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0627 \u0646\u0627\u0645 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u06cc\u062f \u0646\u0647 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0622\u0646.<\/p>\n<p>  -e MONGO_INITDB_ROOT_USERNAME=admin:<\/p>\n<p>\u0627\u06cc\u0646 -e flag \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u0634\u0648\u062f MONGO_INITDB_ROOT_USERNAME \u0628\u0647 admin\u060c \u06a9\u0647 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u06cc\u0634\u0647 MongoDB \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  -e MONGO_INITDB_ROOT_PASSWORD=changethis123:<\/p>\n<p>\u0645\u0634\u0627\u0628\u0647 \u06af\u0632\u06cc\u0646\u0647 \u0642\u0628\u0644\u06cc\u060c \u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f MONGO_INITDB_ROOT_PASSWORD \u0628\u0647 changethis123\u060c \u062a\u0639\u0631\u06cc\u0641 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u06cc\u0634\u0647 MongoDB.<\/p>\n<p>  mongo:<\/p>\n<p>\u0627\u06cc\u0646 \u0646\u0627\u0645 \u062a\u0635\u0648\u06cc\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc MongoDB \u0627\u0632 Docker Hub \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f docker \u062f\u0627\u0631\u06cc\u0645\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u062a\u0635\u0648\u06cc\u0631 mongodb express \u0631\u0627 \u0628\u06a9\u0634\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0634\u0628\u06a9\u0647 \u0645\u0648\u062c\u0648\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 docker network ls<\/p>\n<p>\u0646\u0627\u0645 \u0634\u0628\u06a9\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0647 \u062a\u0627\u0632\u06af\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u062e\u0631\u0648\u062c\u06cc \u0645\u06cc \u062f\u0647\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0622\u0646\u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0627\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0635\u062d\u0628\u062a \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0628\u0647 \u0633\u0631\u0648\u0631 mongo express \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 localhost:8081<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 \u0648 \u0628\u0647\u062a\u0631\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0647 \u062c\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644\u060c \u0627\u0632 dockerfile \u0648 docker compose \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0648\u0627\u0636\u062d \u0628\u0648\u062f\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 Docker Compose \u0627\u0632 \u0646\u062d\u0648 YAML \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0646\u062d\u0648\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0686\u0646\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0631\u0627 \u062f\u0631 Docker \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 Dockerfile \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062d\u0627\u0648\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u0633\u062a.<\/p>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0633\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b Node.js \u0631\u0627 \u0646\u0635\u0628 \u0646\u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>   mkdir docker-node-mongo<br \/>\n   cd docker-node-mongo<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Node.js \u062c\u062f\u06cc\u062f \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p>   npm init -y<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u060c \u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u0627\u06a9\u0633\u067e\u0631\u0633 \u0628\u0631\u0627\u06cc \u0648\u0628 \u0633\u0631\u0648\u0631 \u0645\u0627 \u0648 \u0645\u0627\u0646\u06af\u0648\u0633 \u0628\u0631\u0627\u06cc \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 MongoDB:<\/p>\n<p>   npm install express mongoose<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f index.js \u0641\u0627\u06cc\u0644 \u0628\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u0631 Express \u0633\u0627\u062f\u0647 \u0648 \u06cc\u06a9 \u0627\u062a\u0635\u0627\u0644 MongoDB \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Mongoose:<\/p>\n<p>   const express = require(&#8216;express&#8217;);<br \/>\n   const mongoose = require(&#8216;mongoose&#8217;);<\/p>\n<p>   const app = express();<br \/>\n   const port = 3000;<\/p>\n<p>   \/\/ MongoDB connection<br \/>\n   mongoose.connect(&#8216;mongodb:\/\/mongo:27017\/testdb&#8217;, {<br \/>\n     useNewUrlParser: true,<br \/>\n     useUnifiedTopology: true,<br \/>\n   }).then(() =&gt; {<br \/>\n     console.log(&#8216;Connected to MongoDB&#8217;);<br \/>\n   }).catch(err =&gt; {<br \/>\n     console.log(&#8216;Failed to connect to MongoDB&#8217;, err);<br \/>\n   });<\/p>\n<p>   \/\/ Routes<br \/>\n   app.get(&#8216;\/&#8217;, (req, res) =&gt; {<br \/>\n     res.send(&#8216;Hello from Node.js and MongoDB&#8217;);<br \/>\n   });<\/p>\n<p>   app.listen(port, () =&gt; {<br \/>\n     console.log(`App running at http:\/\/localhost:${port}`);<br \/>\n   });<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0627\u06a9\u0633\u067e\u0631\u0633 \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 MongoDB \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0645\u062a\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f mongodb:\/\/mongo:27017\/testdb. \u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0622\u0646 \u0631\u0627 Dockerize \u06a9\u0646\u06cc\u0645.<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 Dockerfile \u0628\u0631\u0627\u06cc Node.js<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0628\u0627\u06cc\u062f a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 Dockerfile \u06a9\u0647 \u0645\u062d\u06cc\u0637 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0645\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u0644\u0641 Dockerfile \u0627\u0633\u0627\u0633\u0627\u064b \u0637\u0631\u062d\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u062a\u0635\u0648\u06cc\u0631 Docker \u0627\u0633\u062a \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f Dockerfile \u062f\u0631 \u0631\u06cc\u0634\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0648 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p># Use the official Node.js image from Docker Hub<br \/>\nFROM node:16<\/p>\n<p># Set the working directory inside the container<br \/>\nWORKDIR \/app<\/p>\n<p># Copy package.json and install dependencies<br \/>\nCOPY package*.json .\/<br \/>\nRUN npm install<\/p>\n<p># Copy the rest of the app files<br \/>\nCOPY . .<\/p>\n<p># Expose the port the app runs on<br \/>\nEXPOSE 3000<\/p>\n<p># Command to run the app<br \/>\nCMD [&#8220;node&#8221;, &#8220;index.js&#8221;]\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 Dockerfile \u062e\u0648\u0627\u0647\u062f \u0634\u062f:<\/p>\n<p>\u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc Node.js \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<br \/>\n\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f \/app.<br \/>\n\u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f package.json \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<br \/>\n\u0628\u0642\u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0646\u0642\u0637\u0647 \u0648\u0631\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc MongoDB \u0648 MongoExpress \u0628\u0627 Docker Compose<\/p>\n<p>\u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0647\u0645\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647\u060c \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f Docker Compose \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062d\u06cc\u0637 \u0686\u0646\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0645\u0627. Docker Compose \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062e\u062f\u0645\u0627\u062a\u060c \u0634\u0628\u06a9\u0647 \u0647\u0627 \u0648 \u062d\u062c\u0645 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645 docker-compose.yml \u0641\u0627\u06cc\u0644\u060c \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0646 \u06a9\u0644 \u067e\u0634\u062a\u0647 \u0645\u0627 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f. \u0646\u06a9\u062a\u0647 \u0627\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 docker compose \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u0628\u06a9\u0647 \u0646\u062f\u0627\u0631\u06cc\u0645\u060c \u0622\u0646 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0628\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 yaml \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 docker-compose.yml \u0641\u0627\u06cc\u0644 \u062f\u0631 \u0631\u06cc\u0634\u0647 \u067e\u0631\u0648\u0698\u0647:<\/p>\n<p>version: &#8216;3&#8217;<br \/>\nservices:<br \/>\n  nodeapp:<br \/>\n    build: .<br \/>\n    ports:<br \/>\n      &#8211; &#8216;3000:3000&#8217;<br \/>\n    volumes:<br \/>\n      &#8211; .:\/app<br \/>\n    depends_on:<br \/>\n      &#8211; mongo<br \/>\n  mongo:<br \/>\n    image: mongo<br \/>\n    ports:<br \/>\n      &#8211; &#8216;27017:27017&#8217;<br \/>\n  mongo-express:<br \/>\n    image: mongo-express<br \/>\n    ports:<br \/>\n      &#8211; &#8216;8081:8081&#8217;<br \/>\n    environment:<br \/>\n      ME_CONFIG_MONGODB_ADMINUSERNAME: root<br \/>\n      ME_CONFIG_MONGODB_ADMINPASSWORD: example<br \/>\n      ME_CONFIG_MONGODB_SERVER: mongo<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0633\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>nodeapp: \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0645\u0627.<\/p>\n<p>\u0645\u0648\u0646\u06af\u0648: \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 MongoDB \u06a9\u0647 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f 27017.<\/p>\n<p>mongo-express: \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0648\u0628 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a MongoDB\u060c \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0631 \u067e\u0648\u0631\u062a 8081.<\/p>\n<p>  \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/p>\n<p>\u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0647\u0645\u0647 \u0686\u06cc\u0632\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker Compose \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>docker-compose up<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0633\u062a\u0646 \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0627\u0632 Docker Compose \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f<\/p>\n<p>docker-compose down<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>Docker Compose \u062a\u0635\u0627\u0648\u06cc\u0631 \u0644\u0627\u0632\u0645 \u0631\u0627 \u0645\u06cc \u06a9\u0634\u062f\u060c \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0627 \u0645\u06cc \u0633\u0627\u0632\u062f \u0648 \u0647\u0645\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0631\u0627 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u062f. \u067e\u0633 \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0641\u0631\u0622\u06cc\u0646\u062f\u060c \u0628\u0627\u06cc\u062f \u06af\u0632\u0627\u0631\u0634\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u0632 MongoDB\u060c Node.js \u0648 MongoExpress \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u06cc\u062f http:\/\/localhost:3000 \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Node.js.<br \/>\n\u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u06cc\u062f http:\/\/localhost:8081 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 MongoExpress \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f.<\/p>\n<p>  \u0627\u062a\u0635\u0627\u0644 Node.js \u0628\u0647 MongoDB<\/p>\n<p>\u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 MongoDB \u0628\u0627 \u0631\u0634\u062a\u0647 \u0627\u062a\u0635\u0627\u0644 \u0632\u06cc\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a index.js:<\/p>\n<p>mongoose.connect(&#8216;mongodb:\/\/mongo:27017\/testdb&#8217;, {<br \/>\n  useNewUrlParser: true,<br \/>\n  useUnifiedTopology: true,<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 mongo hostname \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 MongoDB \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0645\u0627 \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f docker-compose.yml. Docker Compose \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0627 \u0646\u0627\u0645 \u0633\u0631\u0648\u06cc\u0633 \u062e\u0648\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f.<\/p>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645 Node.js\u060c MongoDB\u060c \u0648 MongoExpress. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker Compose\u060c \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0647\u0645\u0627\u0647\u0646\u06af \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0637\u0648\u0631 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0628\u0627 \u0647\u0645 \u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f \u0648 \u0686\u0631\u062e\u0634 \u06cc\u06a9 \u067e\u0634\u062a\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u062e\u062f\u0645\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\u060c \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 MongoExpress \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0627\u06cc\u0632\u0648\u0644\u0647 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0646\u0635\u0628 MongoDB \u06cc\u0627 \u0633\u0627\u06cc\u0631 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p>\u062e\u0648\u0627\u0646\u062f\u0646 \u0645\u0628\u0627\u0631\u06a9!!! \u0644\u0637\u0641\u0627 \u0644\u0627\u06cc\u06a9 \u06a9\u0646\u06cc\u062f\u060c \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u0648 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f!!!<\/p>\n<div data-article-id=\"2039083\" id=\"article-body\">\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-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#%D9%85%D9%82%D8%AF%D9%85%D9%87\" >\u0645\u0642\u062f\u0645\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#%D8%AA%D9%88%D8%B6%DB%8C%D8%AD_%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%86_%D8%B4%D8%A7%D8%AA\" >\u062a\u0648\u0636\u06cc\u062d \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a:<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#docker_run\" >docker run:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#-d\" >-d:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#-p_27017_27017\" >-p 27017:27017:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#-network_mongo-network\" >--network mongo-network:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#-name_mongodb\" >--name mongodb:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#-e_MONGO_INITDB_ROOT_USERNAMEadmin\" >-e MONGO_INITDB_ROOT_USERNAME=admin:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#-e_MONGO_INITDB_ROOT_PASSWORDchangethis123\" >-e MONGO_INITDB_ROOT_PASSWORD=changethis123:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#mongo\" >mongo:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87-2\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DB%8C%DA%A9_Dockerfile_%D8%A8%D8%B1%D8%A7%DB%8C_Nodejs\" >\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 Dockerfile \u0628\u0631\u0627\u06cc Node.js<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_MongoDB_%D9%88_MongoExpress_%D8%A8%D8%A7_Docker_Compose\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc MongoDB \u0648 MongoExpress \u0628\u0627 Docker Compose<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87\" >\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#%D8%A7%D8%AA%D8%B5%D8%A7%D9%84_Nodejs_%D8%A8%D9%87_MongoDB\" >\u0627\u062a\u0635\u0627\u0644 Node.js \u0628\u0647 MongoDB<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/using-dockerfile-and-docker-compose-for-local-development-with-nodejs-mongodb-and-mongoexpress-2ajg\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%82%D8%AF%D9%85%D9%87\"><\/span>\n<p>  \u0645\u0642\u062f\u0645\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0628\u0627 Node.js\u060c MongoDB \u0648 MongoExpress \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. Docker \u0627\u0628\u0632\u0627\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u0622\u0646\u0647\u0627 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0627\u0632 \u062b\u0628\u0627\u062a \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p>\u0647\u062f\u0641 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u062f\u0647 Node.js \u0645\u062a\u0635\u0644 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 MongoDB \u0631\u0627 \u0628\u0686\u0631\u062e\u0627\u0646\u06cc\u062f. \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 MongoExpress \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0633\u0628\u06a9 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0648\u0628 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0647\u0645\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u0646\u062f. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0634\u0645\u0627 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u06a9\u0627\u0645\u0644\u0627 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a \u06a9\u0647 \u062a\u0646\u0647\u0627 \u0628\u0627 \u0686\u0646\u062f \u062f\u0633\u062a\u0648\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0631\u062f \u0648 \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u062f.<\/p>\n<p><strong>\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<\/strong><br \/>\u0642\u0628\u0644 \u0627\u0632 \u063a\u0648\u0627\u0635\u06cc\u060c \u0644\u0637\u0641\u0627\u064b \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f:<\/p>\n<ul>\n<li>Docker: \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f Docker \u0631\u0627 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u0648 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u062f\u0631\u06a9 \u0627\u0648\u0644\u06cc\u0647 Node.js \u0648 MongoDB.<\/li>\n<li>\u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 EC2 Cloud \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u063a\u06cc\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648<\/li>\n<\/ul>\n<p>\u0627\u06af\u0631 \u062f\u0631 Docker \u062a\u0627\u0632\u0647 \u06a9\u0627\u0631 \u0647\u0633\u062a\u06cc\u062f\u060c \u062c\u0627\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u0646\u06cc\u0633\u062a! \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0636\u0631\u0648\u0631\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062d\u06cc\u0637 \u062e\u0648\u062f \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u06cc\u062f\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0631\u0627\u06cc Docker<\/strong><br \/>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 mongodb \u0648 \u062a\u0635\u0648\u06cc\u0631 mongo express UI \u0631\u0627 \u0627\u0632 dockerhub \u0628\u06a9\u0634\u06cc\u0645.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f docker \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645 \u0627\u0645\u0627 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0644\u06cc\u0633\u062a \u0647\u0627\u06cc \u0628\u0633\u062a\u0647 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">sudo <\/span>apt update\n<span class=\"nb\">sudo <\/span>apt upgrade <span class=\"nt\">-y<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Dependencies \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<br \/>\u0628\u0633\u062a\u0647 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647 apt \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u0627\u0632 \u0645\u062e\u0627\u0632\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 HTTPS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">sudo <\/span>apt <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> apt-transport-https ca-certificates curl software-properties-common\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u0644\u06cc\u062f \u0631\u0633\u0645\u06cc GPG Docker \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>curl <span class=\"nt\">-fsSL<\/span> https:\/\/download.docker.com\/linux\/ubuntu\/gpg | <span class=\"nb\">sudo <\/span>gpg <span class=\"nt\">--dearmor<\/span> <span class=\"nt\">-o<\/span> \/usr\/share\/keyrings\/docker-archive-keyring.gpg\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u062e\u0632\u0646 Docker \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<br \/>\u0645\u062e\u0632\u0646 Docker \u0631\u0627 \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0645\u0646\u0627\u0633\u0628 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">echo<\/span> <span class=\"se\">\\<\/span>\n  <span class=\"s2\">\"deb [arch=<\/span><span class=\"si\">$(<\/span>dpkg <span class=\"nt\">--print-architecture<\/span><span class=\"si\">)<\/span><span class=\"s2\"> signed-by=\/usr\/share\/keyrings\/docker-archive-keyring.gpg] https:\/\/download.docker.com\/linux\/ubuntu <\/span><span class=\"se\">\\<\/span><span class=\"s2\">\n  <\/span><span class=\"si\">$(<\/span>lsb_release <span class=\"nt\">-cs<\/span><span class=\"si\">)<\/span><span class=\"s2\"> stable\"<\/span> | <span class=\"nb\">sudo tee<\/span> \/etc\/apt\/sources.list.d\/docker.list <span class=\"o\">&gt;<\/span> \/dev\/null\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Docker Engine \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">sudo <\/span>apt-get <span class=\"nb\">install <\/span>docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0622\u0646 \u062f\u0627\u06a9\u0631 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0632\u0645\u0627\u0646 \u0622\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0628\u06a9\u0634\u062f<br \/>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u062a\u0635\u0648\u06cc\u0631 mongodb \u0631\u0627 \u0628\u06a9\u0634\u06cc\u0645<\/p>\n<p><\/p>\n<hr\/>\n<p>\u062f\u0633\u062a\u0648\u0631 docker run \u062f\u0648 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f\u060c \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u0645\u06cc \u06a9\u0634\u062f \u0648 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0622\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0645\u06cc \u06af\u0648\u06cc\u06cc\u0645. \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0646\u0645\u0648\u0646\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0633\u062a.<\/p>\n<p>\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker \u062f\u0631 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0627\u06cc\u0632\u0648\u0644\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u0646\u062f \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0627\u06af\u0631 \u0645\u0627 \u062f\u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0622\u0646\u0647\u0627 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u0647\u0645 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f\u060c \u0628\u0627\u06cc\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D9%88%D8%B6%DB%8C%D8%AD_%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%86_%D8%B4%D8%A7%D8%AA\"><\/span>\n<p>  \u062a\u0648\u0636\u06cc\u062d \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"docker_run\"><\/span>\n<p>  <code>docker run<\/code>:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062c\u062f\u06cc\u062f \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 Docker \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"-d\"><\/span>\n<p>  <code>-d<\/code>:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 <code>-d<\/code> \u067e\u0631\u0686\u0645 \u0628\u0647 \u062f\u0627\u06a9\u0631 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u062c\u062f\u0627\u0634\u062f\u0647 (\u062f\u0631 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647) \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"-p_27017_27017\"><\/span>\n<p>  <code>-p 27017:27017<\/code>:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u067e\u0648\u0631\u062a \u0631\u0627 \u062a\u0631\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f <code>27017<\/code> \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0628\u0647 \u067e\u0648\u0631\u062a <code>27017<\/code> \u062f\u0631 \u0638\u0631\u0641 MongoDB \u0627\u0632 \u0627\u06cc\u0646 \u067e\u0648\u0631\u062a \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<ul>\n<li>\u0646\u062d\u0648 \u0627\u0633\u062a <code>host_port:container_port<\/code>\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 MongoDB \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f <code>localhost:27017<\/code> \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"-network_mongo-network\"><\/span>\n<p>  <code>--network mongo-network<\/code>:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 Docker \u0628\u0647 \u0646\u0627\u0645 \u0645\u062a\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f <code>mongo-network<\/code>. \u0627\u06cc\u0646 \u0634\u0628\u06a9\u0647 \u0628\u0647 \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f. <\/p>\n<ul>\n<li>\u0627\u06af\u0631 \u0634\u0628\u06a9\u0647 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>docker network create mongo-network<\/code>.<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"-name_mongodb\"><\/span>\n<p>  <code>--name mongodb<\/code>:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0646\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0635 \u0645\u06cc \u062f\u0647\u062f (<code>mongodb<\/code>) \u0628\u0647 \u0638\u0631\u0641 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627. \u0628\u0647 \u0634\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0627 \u0646\u0627\u0645 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u06cc\u062f \u0646\u0647 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0622\u0646.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"-e_MONGO_INITDB_ROOT_USERNAMEadmin\"><\/span>\n<p>  <code>-e MONGO_INITDB_ROOT_USERNAME=admin<\/code>:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 <code>-e<\/code> flag \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u0634\u0648\u062f <code>MONGO_INITDB_ROOT_USERNAME<\/code> \u0628\u0647 <code>admin<\/code>\u060c \u06a9\u0647 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u06cc\u0634\u0647 MongoDB \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"-e_MONGO_INITDB_ROOT_PASSWORDchangethis123\"><\/span>\n<p>  <code>-e MONGO_INITDB_ROOT_PASSWORD=changethis123<\/code>:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0634\u0627\u0628\u0647 \u06af\u0632\u06cc\u0646\u0647 \u0642\u0628\u0644\u06cc\u060c \u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f <code>MONGO_INITDB_ROOT_PASSWORD<\/code> \u0628\u0647 <code>changethis123<\/code>\u060c \u062a\u0639\u0631\u06cc\u0641 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u06cc\u0634\u0647 MongoDB.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"mongo\"><\/span>\n<p>  <code>mongo<\/code>:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 \u0646\u0627\u0645 \u062a\u0635\u0648\u06cc\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc MongoDB \u0627\u0632 Docker Hub \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f docker \u062f\u0627\u0631\u06cc\u0645\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u062a\u0635\u0648\u06cc\u0631 mongodb express \u0631\u0627 \u0628\u06a9\u0634\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.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%2F1hyk9zg5mzg0gcrhfhob.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631 \u0627\u06a9\u0633\u067e\u0631\u0633 \u0645\u0648\u0646\u06af\u0648\" loading=\"lazy\" width=\"800\" height=\"150\" title=\"\"><\/p>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0634\u0628\u06a9\u0647 \u0645\u0648\u062c\u0648\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 <br \/><code>docker network ls<\/code><\/p>\n<p>\u0646\u0627\u0645 \u0634\u0628\u06a9\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0647 \u062a\u0627\u0632\u06af\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u062e\u0631\u0648\u062c\u06cc \u0645\u06cc \u062f\u0647\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0622\u0646\u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0627\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0635\u062d\u0628\u062a \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0628\u0647 \u0633\u0631\u0648\u0631 mongo express \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 <code>localhost:8081<\/code><\/p>\n<hr\/>\n<p><img decoding=\"async\" src=\"https:\/\/media.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%2Fgm423x2r4hj9ulzdp7cg.png\" alt=\"mongoexpress\" loading=\"lazy\" width=\"800\" height=\"421\" title=\"\"><\/p>\n<hr\/>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 \u0648 \u0628\u0647\u062a\u0631\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0647 \u062c\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644\u060c \u0627\u0632 dockerfile \u0648 docker compose \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0648\u0627\u0636\u062d \u0628\u0648\u062f\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 Docker Compose \u0627\u0632 \u0646\u062d\u0648 YAML \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0646\u062d\u0648\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0686\u0646\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0631\u0627 \u062f\u0631 Docker \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 Dockerfile \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062d\u0627\u0648\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u0633\u062a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87-2\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0633\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b Node.js \u0631\u0627 \u0646\u0635\u0628 \u0646\u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<ol>\n<li>\u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>   <span class=\"nb\">mkdir <\/span>docker-node-mongo\n   <span class=\"nb\">cd <\/span>docker-node-mongo\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ol>\n<li>\u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Node.js \u062c\u062f\u06cc\u062f \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>   npm init <span class=\"nt\">-y<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ol>\n<li>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u060c \u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 <strong>\u0627\u06a9\u0633\u067e\u0631\u0633<\/strong> \u0628\u0631\u0627\u06cc \u0648\u0628 \u0633\u0631\u0648\u0631 \u0645\u0627 \u0648 <strong>\u0645\u0627\u0646\u06af\u0648\u0633<\/strong> \u0628\u0631\u0627\u06cc \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 MongoDB:\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>   npm <span class=\"nb\">install <\/span>express mongoose\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ol>\n<li>\u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>index.js<\/code> \u0641\u0627\u06cc\u0644 \u0628\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u0631 Express \u0633\u0627\u062f\u0647 \u0648 \u06cc\u06a9 \u0627\u062a\u0635\u0627\u0644 MongoDB \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Mongoose:\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code>   <span class=\"kd\">const<\/span> <span class=\"nx\">express<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">express<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n   <span class=\"kd\">const<\/span> <span class=\"nx\">mongoose<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">mongoose<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n\n   <span class=\"kd\">const<\/span> <span class=\"nx\">app<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">express<\/span><span class=\"p\">();<\/span>\n   <span class=\"kd\">const<\/span> <span class=\"nx\">port<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">3000<\/span><span class=\"p\">;<\/span>\n\n   <span class=\"c1\">\/\/ MongoDB connection<\/span>\n   <span class=\"nx\">mongoose<\/span><span class=\"p\">.<\/span><span class=\"nf\">connect<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">mongodb:\/\/mongo:27017\/testdb<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n     <span class=\"na\">useNewUrlParser<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n     <span class=\"na\">useUnifiedTopology<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n   <span class=\"p\">}).<\/span><span class=\"nf\">then<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n     <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Connected to MongoDB<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n   <span class=\"p\">}).<\/span><span class=\"k\">catch<\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n     <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Failed to connect to MongoDB<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">err<\/span><span class=\"p\">);<\/span>\n   <span class=\"p\">});<\/span>\n\n   <span class=\"c1\">\/\/ Routes<\/span>\n   <span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n     <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Hello from Node.js and MongoDB<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n   <span class=\"p\">});<\/span>\n\n   <span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">listen<\/span><span class=\"p\">(<\/span><span class=\"nx\">port<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n     <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"s2\">`App running at http:\/\/localhost:<\/span><span class=\"p\">${<\/span><span class=\"nx\">port<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n   <span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0627\u06a9\u0633\u067e\u0631\u0633 \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 MongoDB \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0645\u062a\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f <code>mongodb:\/\/mongo:27017\/testdb<\/code>. \u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0622\u0646 \u0631\u0627 Dockerize \u06a9\u0646\u06cc\u0645.<\/p>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DB%8C%DA%A9_Dockerfile_%D8%A8%D8%B1%D8%A7%DB%8C_Nodejs\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 Dockerfile \u0628\u0631\u0627\u06cc Node.js<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0628\u0627\u06cc\u062f a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 <code>Dockerfile<\/code> \u06a9\u0647 \u0645\u062d\u06cc\u0637 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0645\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u0644\u0641 <code>Dockerfile<\/code> \u0627\u0633\u0627\u0633\u0627\u064b \u0637\u0631\u062d\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u062a\u0635\u0648\u06cc\u0631 Docker \u0627\u0633\u062a \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>Dockerfile<\/code> \u062f\u0631 \u0631\u06cc\u0634\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0648 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight docker\"><code><span class=\"c\"># Use the official Node.js image from Docker Hub<\/span>\n<span class=\"k\">FROM<\/span><span class=\"s\"> node:16<\/span>\n\n<span class=\"c\"># Set the working directory inside the container<\/span>\n<span class=\"k\">WORKDIR<\/span><span class=\"s\"> \/app<\/span>\n\n<span class=\"c\"># Copy package.json and install dependencies<\/span>\n<span class=\"k\">COPY<\/span><span class=\"s\"> package*.json .\/<\/span>\n<span class=\"k\">RUN <\/span>npm <span class=\"nb\">install<\/span>\n\n<span class=\"c\"># Copy the rest of the app files<\/span>\n<span class=\"k\">COPY<\/span><span class=\"s\"> . .<\/span>\n\n<span class=\"c\"># Expose the port the app runs on<\/span>\n<span class=\"k\">EXPOSE<\/span><span class=\"s\"> 3000<\/span>\n\n<span class=\"c\"># Command to run the app<\/span>\n<span class=\"k\">CMD<\/span><span class=\"s\"> [\"node\", \"index.js\"]<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>Dockerfile<\/code> \u062e\u0648\u0627\u0647\u062f \u0634\u062f:<\/p>\n<ol>\n<li>\u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc Node.js \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f <code>\/app<\/code>.<\/li>\n<li>\u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f <code>package.json<\/code> \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0628\u0642\u06cc\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0646\u0642\u0637\u0647 \u0648\u0631\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ol>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_MongoDB_%D9%88_MongoExpress_%D8%A8%D8%A7_Docker_Compose\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc MongoDB \u0648 MongoExpress \u0628\u0627 Docker Compose<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0647\u0645\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647\u060c \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <strong>Docker Compose<\/strong> \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062d\u06cc\u0637 \u0686\u0646\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0645\u0627. Docker Compose \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062e\u062f\u0645\u0627\u062a\u060c \u0634\u0628\u06a9\u0647 \u0647\u0627 \u0648 \u062d\u062c\u0645 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645 <code>docker-compose.yml<\/code> \u0641\u0627\u06cc\u0644\u060c \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0646 \u06a9\u0644 \u067e\u0634\u062a\u0647 \u0645\u0627 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f. \u0646\u06a9\u062a\u0647 \u0627\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 docker compose \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u0628\u06a9\u0647 \u0646\u062f\u0627\u0631\u06cc\u0645\u060c \u0622\u0646 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0628\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 yaml \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 <code>docker-compose.yml<\/code> \u0641\u0627\u06cc\u0644 \u062f\u0631 \u0631\u06cc\u0634\u0647 \u067e\u0631\u0648\u0698\u0647:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight yaml\"><code><span class=\"na\">version<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">3'<\/span>\n<span class=\"na\">services<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">nodeapp<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">build<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.<\/span>\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s1\">'<\/span><span class=\"s\">3000:3000'<\/span>\n    <span class=\"na\">volumes<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">.:\/app<\/span>\n    <span class=\"na\">depends_on<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">mongo<\/span>\n  <span class=\"na\">mongo<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">mongo<\/span>\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s1\">'<\/span><span class=\"s\">27017:27017'<\/span>\n  <span class=\"na\">mongo-express<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">mongo-express<\/span>\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s1\">'<\/span><span class=\"s\">8081:8081'<\/span>\n    <span class=\"na\">environment<\/span><span class=\"pi\">:<\/span>\n      <span class=\"na\">ME_CONFIG_MONGODB_ADMINUSERNAME<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\n      <span class=\"na\">ME_CONFIG_MONGODB_ADMINPASSWORD<\/span><span class=\"pi\">:<\/span> <span class=\"s\">example<\/span>\n      <span class=\"na\">ME_CONFIG_MONGODB_SERVER<\/span><span class=\"pi\">:<\/span> <span class=\"s\">mongo<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0633\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<ol>\n<li>\n<strong>nodeapp<\/strong>: \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0645\u0627.<\/li>\n<li>\n<strong>\u0645\u0648\u0646\u06af\u0648<\/strong>: \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 MongoDB \u06a9\u0647 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f <code>27017<\/code>.<\/li>\n<li>\n<strong>mongo-express<\/strong>: \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0648\u0628 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a MongoDB\u060c \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0631 \u067e\u0648\u0631\u062a <code>8081<\/code>.<\/li>\n<\/ol>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87\"><\/span>\n<p>  \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0647\u0645\u0647 \u0686\u06cc\u0632\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker Compose \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>docker-compose up\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0633\u062a\u0646 \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0627\u0632 Docker Compose \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>docker-compose down\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Docker Compose \u062a\u0635\u0627\u0648\u06cc\u0631 \u0644\u0627\u0632\u0645 \u0631\u0627 \u0645\u06cc \u06a9\u0634\u062f\u060c \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0627 \u0645\u06cc \u0633\u0627\u0632\u062f \u0648 \u0647\u0645\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0631\u0627 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u062f. \u067e\u0633 \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0641\u0631\u0622\u06cc\u0646\u062f\u060c \u0628\u0627\u06cc\u062f \u06af\u0632\u0627\u0631\u0634\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u0632 MongoDB\u060c Node.js \u0648 MongoExpress \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<ul>\n<li>\u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u06cc\u062f <code>http:\/\/localhost:3000<\/code> \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Node.js.<\/li>\n<li>\u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u06cc\u062f <code>http:\/\/localhost:8081<\/code> \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 MongoExpress \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f.<\/li>\n<\/ul>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AA%D8%B5%D8%A7%D9%84_Nodejs_%D8%A8%D9%87_MongoDB\"><\/span>\n<p>  \u0627\u062a\u0635\u0627\u0644 Node.js \u0628\u0647 MongoDB<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 MongoDB \u0628\u0627 \u0631\u0634\u062a\u0647 \u0627\u062a\u0635\u0627\u0644 \u0632\u06cc\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a <code>index.js<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">mongoose<\/span><span class=\"p\">.<\/span><span class=\"nf\">connect<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">mongodb:\/\/mongo:27017\/testdb<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">useNewUrlParser<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">useUnifiedTopology<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>mongo<\/code> hostname \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 MongoDB \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0645\u0627 \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f <code>docker-compose.yml<\/code>. Docker Compose \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0627 \u0646\u0627\u0645 \u0633\u0631\u0648\u06cc\u0633 \u062e\u0648\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f.<\/p>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645 <strong>Node.js<\/strong>\u060c <strong>MongoDB<\/strong>\u060c \u0648 <strong>MongoExpress<\/strong>. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker Compose\u060c \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0647\u0645\u0627\u0647\u0646\u06af \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0637\u0648\u0631 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0628\u0627 \u0647\u0645 \u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f \u0648 \u0686\u0631\u062e\u0634 \u06cc\u06a9 \u067e\u0634\u062a\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u062e\u062f\u0645\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\u060c \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 MongoExpress \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0627\u06cc\u0632\u0648\u0644\u0647 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0646\u0635\u0628 MongoDB \u06cc\u0627 \u0633\u0627\u06cc\u0631 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p>\u062e\u0648\u0627\u0646\u062f\u0646 \u0645\u0628\u0627\u0631\u06a9!!! \u0644\u0637\u0641\u0627 \u0644\u0627\u06cc\u06a9 \u06a9\u0646\u06cc\u062f\u060c \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u0648 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f!!!<\/p>\n<hr\/><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0645\u0642\u062f\u0645\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0628\u0627 Node.js\u060c MongoDB \u0648 MongoExpress \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. Docker \u0627\u0628\u0632\u0627\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u0622\u0646\u0647\u0627 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0627\u0632 \u062b\u0628\u0627\u062a \u062f\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":80245,"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-80244","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\/80244","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=80244"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/80244\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/80245"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=80244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=80244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=80244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}