برنامه نویسی

استفاده از Dockerfile و Docker Compose برای توسعه محلی با Node.js، MongoDB و MongoExpress

Summarize this content to 400 words in Persian Lang

مقدمه

در این پست، من به شما نشان خواهم داد که چگونه یک محیط توسعه محلی را با استفاده از Docker با Node.js، MongoDB و MongoExpress راه اندازی کنید. Docker ابزار قدرتمندی است که بسته‌بندی برنامه‌ها و وابستگی‌های آنها را آسان می‌کند و از ثبات در محیط‌های مختلف اطمینان می‌دهد.

هدف این راهنما این است که به شما کمک کند یک برنامه ساده Node.js متصل به پایگاه داده MongoDB را بچرخانید. ما همچنین از MongoExpress به عنوان یک رابط سبک مبتنی بر وب برای مدیریت پایگاه داده استفاده خواهیم کرد که همه در داخل کانتینرهای Docker اجرا می شوند. در پایان این پست، شما یک محیط کاملا کاربردی خواهید داشت که تنها با چند دستور می توان آن را راه اندازی کرد و از بین برد.

پیش نیازهاقبل از غواصی، لطفاً مطمئن شوید که موارد زیر را نصب کرده اید:

Docker: می توانید Docker را از اینجا دانلود و نصب کنید.
درک اولیه Node.js و MongoDB.
یک نمونه EC2 Cloud برای کاربران غیر اوبونتو

اگر در Docker تازه کار هستید، جای نگرانی نیست! این راهنما شما را از طریق دستورات ضروری که برای راه‌اندازی محیط خود باید بدانید، راهنمایی می‌کند.

راه اندازی پروژه

راه اندازی برای Dockerبنابراین ما شروع به راه اندازی پروژه می کنیم، اولین کاری که باید انجام دهیم این است که تصاویر mongodb و تصویر mongo express UI را از dockerhub بکشیم.

بیایید docker را نصب کنیم اما ابتدا باید لیست های بسته را به روز کنیم

sudo apt update
sudo apt upgrade -y

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Dependencies مورد نیاز را نصب کنیدبسته هایی را نصب کنید که به apt اجازه می دهد از مخازن از طریق HTTPS استفاده کند:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کلید رسمی GPG Docker را اضافه کنید

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مخزن Docker را راه اندازی کنیدمخزن Docker را به منابع مناسب اضافه کنید:

echo \
“deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Docker Engine را نصب کنید

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون آن داکر نصب شده است، زمان آن است که تصاویر را بکشدبیایید ابتدا تصویر mongodb را بکشیم

دستور docker run دو کار را انجام می دهد، تصویر را می کشد و تصویری را اجرا می کند که به آن کانتینر می گوییم. یک کانتینر نمونه در حال اجرا یک تصویر است.

کانتینرهای Docker در یک شبکه ایزوله اجرا می شوند به این معنی که اگر ما دو کانتینر مختلف را اجرا می کنیم و می خواهیم آنها بتوانند با هم ارتباط برقرار کنند، باید آنها را در یک شبکه قرار دهیم.

توضیح اسکرین شات:

docker run:

این دستور یک کانتینر جدید را از یک تصویر Docker شروع می کند.

-d:

این -d پرچم به داکر می‌گوید که کانتینر را در حالت جداشده (در پس‌زمینه) اجرا کند، بنابراین ترمینال را مسدود نمی‌کند.

-p 27017:27017:

این گزینه پورت را ترسیم می کند 27017 در دستگاه میزبان به پورت 27017 در ظرف MongoDB از این پورت برای ارتباط استفاده می کند.

نحو است host_port:container_port، به این معنی که MongoDB از طریق قابل دسترسی خواهد بود localhost:27017 در دستگاه میزبان

–network mongo-network:

این گزینه کانتینر را به یک شبکه Docker به نام متصل می کند mongo-network. این شبکه به چندین کانتینر اجازه می دهد تا با یکدیگر ارتباط برقرار کنند.

اگر شبکه وجود ندارد، آن را با آن ایجاد کنید docker network create mongo-network.

–name mongodb:

این یک نام اختصاص می دهد (mongodb) به ظرف در حال اجرا. به شما این امکان را می دهد که به کانتینر با نام اشاره کنید نه با شناسه کانتینر آن.

-e MONGO_INITDB_ROOT_USERNAME=admin:

این -e flag متغیرهای محیطی را در داخل کانتینر تنظیم می کند. در این صورت تنظیم می شود MONGO_INITDB_ROOT_USERNAME به admin، که نام کاربری کاربر ریشه MongoDB را مشخص می کند.

-e MONGO_INITDB_ROOT_PASSWORD=changethis123:

مشابه گزینه قبلی، این متغیر محیطی را تنظیم می کند MONGO_INITDB_ROOT_PASSWORD به changethis123، تعریف رمز عبور برای کاربر ریشه MongoDB.

mongo:

این نام تصویر مورد استفاده است. در این مورد، این تصویر رسمی MongoDB از Docker Hub است.

اکنون که اطلاعاتی در مورد docker داریم، اجازه دهید تصویر mongodb express را بکشیم و آن را اجرا کنیم

برای بررسی شبکه موجود، می توانیم اجرا کنیم docker network ls

نام شبکه ای را که به تازگی ایجاد کرده ایم خروجی می دهد، بنابراین آنها می توانند با استفاده از نام کانتینر با یکدیگر صحبت کنند.

بنابراین ما می توانیم با استفاده از مرورگر خود به سرور mongo express دسترسی پیدا کنیم localhost:8081

اکنون راه‌اندازی سریع‌تر و بهتری وجود دارد که به جای اجرای دستورات در ترمینال، از dockerfile و docker compose استفاده می‌کند. فقط برای واضح بودن یک فایل Docker Compose از نحو YAML استفاده می کند، نحوه پیکربندی و اجرای برنامه های چند کانتینری را در Docker تعریف می کند در حالی که Dockerfile یک فایل متنی است که حاوی دستورالعمل هایی برای ساخت یک تصویر کانتینر است.

راه اندازی پروژه

ابتدا یک برنامه Node.js ساده ایجاد می کنیم. اگر قبلاً Node.js را نصب نکرده‌اید، می‌توانید آن را از اینجا دانلود کنید.

با ایجاد یک پوشه پروژه شروع کنید:

mkdir docker-node-mongo
cd docker-node-mongo

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک پروژه Node.js جدید را راه اندازی کنید:

npm init -y

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وابستگی های لازم را نصب کنید. برای این تنظیم، ما نیاز داریم اکسپرس برای وب سرور ما و مانگوس برای تعامل با MongoDB:

npm install express mongoose

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد کنید index.js فایل با یک سرور Express ساده و یک اتصال MongoDB با استفاده از Mongoose:

const express = require(‘express’);
const mongoose = require(‘mongoose’);

const app = express();
const port = 3000;

// MongoDB connection
mongoose.connect(‘mongodb://mongo:27017/testdb’, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).then(() => {
console.log(‘Connected to MongoDB’);
}).catch(err => {
console.log(‘Failed to connect to MongoDB’, err);
});

// Routes
app.get(‘/’, (req, res) => {
res.send(‘Hello from Node.js and MongoDB’);
});

app.listen(port, () => {
console.log(`App running at http://localhost:${port}`);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این یک سرور اکسپرس اولیه را راه اندازی می کند و آن را به یک نمونه MongoDB در حال اجرا متصل می کند mongodb://mongo:27017/testdb. حالا بیایید آن را Dockerize کنیم.

ایجاد یک Dockerfile برای Node.js

در مرحله بعد، باید a ایجاد کنیم Dockerfile که محیط را برای برنامه Node.js ما تعریف می کند. الف Dockerfile اساساً طرحی برای ساختن تصویر Docker است که شامل برنامه شما می شود.

یک فایل به نام ایجاد کنید Dockerfile در ریشه دایرکتوری پروژه خود و موارد زیر را اضافه کنید:

# Use the official Node.js image from Docker Hub
FROM node:16

# Set the working directory inside the container
WORKDIR /app

# Copy package.json and install dependencies
COPY package*.json ./
RUN npm install

# Copy the rest of the app files
COPY . .

# Expose the port the app runs on
EXPOSE 3000

# Command to run the app
CMD [“node”, “index.js”]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این Dockerfile خواهد شد:

از تصویر رسمی Node.js استفاده کنید.
دایرکتوری کاری را تنظیم کنید /app.
را کپی کنید package.json و وابستگی های لازم را نصب کنید.
بقیه فایل ها را کپی کنید و نقطه ورود را برای اجرای برنامه Node.js تنظیم کنید.

راه اندازی MongoDB و MongoExpress با Docker Compose

به‌جای اجرای همه سرویس‌ها به صورت جداگانه، از آن استفاده خواهیم کرد Docker Compose برای تعریف و مدیریت محیط چند کانتینری ما. Docker Compose به ما امکان می دهد خدمات، شبکه ها و حجم ها را در یک تعریف کنیم docker-compose.yml فایل، تنظیم کردن کل پشته ما را آسان می کند. نکته ای که باید به خاطر بسپارید این است که هنگام استفاده از docker compose نیازی به ایجاد شبکه نداریم، آن به طور خودکار یک شبکه برای چندین کانتینر تعریف شده در فایل yaml ایجاد می کند.

ایجاد یک docker-compose.yml فایل در ریشه پروژه:

version: ‘3’
services:
nodeapp:
build: .
ports:
– ‘3000:3000’
volumes:
– .:/app
depends_on:
– mongo
mongo:
image: mongo
ports:
– ‘27017:27017’
mongo-express:
image: mongo-express
ports:
– ‘8081:8081’
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: example
ME_CONFIG_MONGODB_SERVER: mongo

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این پیکربندی سه سرویس را تعریف می کند:

nodeapp: برنامه Node.js ما.

مونگو: یک نمونه MongoDB که روی پورت اجرا می شود 27017.

mongo-express: یک رابط مبتنی بر وب برای مدیریت MongoDB، قابل دسترسی در پورت 8081.

اجرای برنامه

با تنظیم همه چیز، اجازه دهید برنامه را با استفاده از Docker Compose اجرا کنیم.

دستور زیر را در ترمینال خود اجرا کنید:

docker-compose up

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای بستن چندین کانتینر که در حال حاضر از Docker Compose استفاده می کنند

docker-compose down

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Docker Compose تصاویر لازم را می کشد، برنامه Node.js را می سازد و همه سرویس ها را شروع می کند. پس از تکمیل فرآیند، باید گزارش‌هایی را از MongoDB، Node.js و MongoExpress مشاهده کنید.

بازدید کنید http://localhost:3000 برای مشاهده اجرای برنامه Node.js.
بازدید کنید http://localhost:8081 برای دسترسی به MongoExpress و مدیریت پایگاه داده خود.

اتصال Node.js به MongoDB

برنامه Node.js ما قبلاً برای اتصال به MongoDB با رشته اتصال زیر تنظیم شده است index.js:

mongoose.connect(‘mongodb://mongo:27017/testdb’, {
useNewUrlParser: true,
useUnifiedTopology: true,
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این mongo hostname به سرویس MongoDB تعریف شده در ما اشاره دارد docker-compose.yml. Docker Compose به طور خودکار یک شبکه برای سرویس ها ایجاد می کند و به آنها امکان می دهد با نام سرویس خود ارتباط برقرار کنند.

نتیجه گیری

در این پست، ما با موفقیت یک محیط توسعه محلی را با استفاده از Docker برای راه اندازی کردیم Node.js، MongoDB، و MongoExpress. با استفاده از Docker Compose، چندین کانتینر را هماهنگ کردیم تا به طور یکپارچه با هم کار کنند و چرخش یک پشته کاملاً کاربردی را برای توسعه آسان‌تر می‌کند.

با این تنظیمات، می توانید به راحتی خدمات بیشتری اضافه کنید، پایگاه داده های خود را با MongoExpress مدیریت کنید و یک محیط ایزوله بدون نیاز به نصب MongoDB یا سایر وابستگی ها به صورت محلی داشته باشید.

خواندن مبارک!!! لطفا لایک کنید، ذخیره کنید، به اشتراک بگذارید و دنبال کنید!!!

مقدمه

در این پست، من به شما نشان خواهم داد که چگونه یک محیط توسعه محلی را با استفاده از Docker با Node.js، MongoDB و MongoExpress راه اندازی کنید. Docker ابزار قدرتمندی است که بسته‌بندی برنامه‌ها و وابستگی‌های آنها را آسان می‌کند و از ثبات در محیط‌های مختلف اطمینان می‌دهد.

هدف این راهنما این است که به شما کمک کند یک برنامه ساده Node.js متصل به پایگاه داده MongoDB را بچرخانید. ما همچنین از MongoExpress به عنوان یک رابط سبک مبتنی بر وب برای مدیریت پایگاه داده استفاده خواهیم کرد که همه در داخل کانتینرهای Docker اجرا می شوند. در پایان این پست، شما یک محیط کاملا کاربردی خواهید داشت که تنها با چند دستور می توان آن را راه اندازی کرد و از بین برد.

پیش نیازها
قبل از غواصی، لطفاً مطمئن شوید که موارد زیر را نصب کرده اید:

  • Docker: می توانید Docker را از اینجا دانلود و نصب کنید.
  • درک اولیه Node.js و MongoDB.
  • یک نمونه EC2 Cloud برای کاربران غیر اوبونتو

اگر در Docker تازه کار هستید، جای نگرانی نیست! این راهنما شما را از طریق دستورات ضروری که برای راه‌اندازی محیط خود باید بدانید، راهنمایی می‌کند.

راه اندازی پروژه

راه اندازی برای Docker
بنابراین ما شروع به راه اندازی پروژه می کنیم، اولین کاری که باید انجام دهیم این است که تصاویر mongodb و تصویر mongo express UI را از dockerhub بکشیم.

بیایید docker را نصب کنیم اما ابتدا باید لیست های بسته را به روز کنیم

sudo apt update
sudo apt upgrade -y
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Dependencies مورد نیاز را نصب کنید
بسته هایی را نصب کنید که به apt اجازه می دهد از مخازن از طریق HTTPS استفاده کند:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کلید رسمی GPG Docker را اضافه کنید

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مخزن Docker را راه اندازی کنید
مخزن Docker را به منابع مناسب اضافه کنید:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Docker Engine را نصب کنید

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون آن داکر نصب شده است، زمان آن است که تصاویر را بکشد
بیایید ابتدا تصویر mongodb را بکشیم

تصویر mongodb


دستور docker run دو کار را انجام می دهد، تصویر را می کشد و تصویری را اجرا می کند که به آن کانتینر می گوییم. یک کانتینر نمونه در حال اجرا یک تصویر است.

کانتینرهای Docker در یک شبکه ایزوله اجرا می شوند به این معنی که اگر ما دو کانتینر مختلف را اجرا می کنیم و می خواهیم آنها بتوانند با هم ارتباط برقرار کنند، باید آنها را در یک شبکه قرار دهیم.

توضیح اسکرین شات:

docker run:

این دستور یک کانتینر جدید را از یک تصویر Docker شروع می کند.

-d:

این -d پرچم به داکر می‌گوید که کانتینر را در حالت جداشده (در پس‌زمینه) اجرا کند، بنابراین ترمینال را مسدود نمی‌کند.

-p 27017:27017:

این گزینه پورت را ترسیم می کند 27017 در دستگاه میزبان به پورت 27017 در ظرف MongoDB از این پورت برای ارتباط استفاده می کند.

  • نحو است host_port:container_port، به این معنی که MongoDB از طریق قابل دسترسی خواهد بود localhost:27017 در دستگاه میزبان

--network mongo-network:

این گزینه کانتینر را به یک شبکه Docker به نام متصل می کند mongo-network. این شبکه به چندین کانتینر اجازه می دهد تا با یکدیگر ارتباط برقرار کنند.

  • اگر شبکه وجود ندارد، آن را با آن ایجاد کنید docker network create mongo-network.

--name mongodb:

این یک نام اختصاص می دهد (mongodb) به ظرف در حال اجرا. به شما این امکان را می دهد که به کانتینر با نام اشاره کنید نه با شناسه کانتینر آن.

-e MONGO_INITDB_ROOT_USERNAME=admin:

این -e flag متغیرهای محیطی را در داخل کانتینر تنظیم می کند. در این صورت تنظیم می شود MONGO_INITDB_ROOT_USERNAME به admin، که نام کاربری کاربر ریشه MongoDB را مشخص می کند.

-e MONGO_INITDB_ROOT_PASSWORD=changethis123:

مشابه گزینه قبلی، این متغیر محیطی را تنظیم می کند MONGO_INITDB_ROOT_PASSWORD به changethis123، تعریف رمز عبور برای کاربر ریشه MongoDB.

mongo:

این نام تصویر مورد استفاده است. در این مورد، این تصویر رسمی MongoDB از Docker Hub است.

اکنون که اطلاعاتی در مورد docker داریم، اجازه دهید تصویر mongodb express را بکشیم و آن را اجرا کنیم

تصویر اکسپرس مونگو

برای بررسی شبکه موجود، می توانیم اجرا کنیم
docker network ls

نام شبکه ای را که به تازگی ایجاد کرده ایم خروجی می دهد، بنابراین آنها می توانند با استفاده از نام کانتینر با یکدیگر صحبت کنند.

بنابراین ما می توانیم با استفاده از مرورگر خود به سرور mongo express دسترسی پیدا کنیم localhost:8081


mongoexpress


اکنون راه‌اندازی سریع‌تر و بهتری وجود دارد که به جای اجرای دستورات در ترمینال، از dockerfile و docker compose استفاده می‌کند. فقط برای واضح بودن یک فایل Docker Compose از نحو YAML استفاده می کند، نحوه پیکربندی و اجرای برنامه های چند کانتینری را در Docker تعریف می کند در حالی که Dockerfile یک فایل متنی است که حاوی دستورالعمل هایی برای ساخت یک تصویر کانتینر است.

راه اندازی پروژه

ابتدا یک برنامه Node.js ساده ایجاد می کنیم. اگر قبلاً Node.js را نصب نکرده‌اید، می‌توانید آن را از اینجا دانلود کنید.

  1. با ایجاد یک پوشه پروژه شروع کنید:
   mkdir docker-node-mongo
   cd docker-node-mongo
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. یک پروژه Node.js جدید را راه اندازی کنید:
   npm init -y
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. وابستگی های لازم را نصب کنید. برای این تنظیم، ما نیاز داریم اکسپرس برای وب سرور ما و مانگوس برای تعامل با MongoDB:
   npm install express mongoose
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. ایجاد کنید index.js فایل با یک سرور Express ساده و یک اتصال MongoDB با استفاده از Mongoose:
   const express = require('express');
   const mongoose = require('mongoose');

   const app = express();
   const port = 3000;

   // MongoDB connection
   mongoose.connect('mongodb://mongo:27017/testdb', {
     useNewUrlParser: true,
     useUnifiedTopology: true,
   }).then(() => {
     console.log('Connected to MongoDB');
   }).catch(err => {
     console.log('Failed to connect to MongoDB', err);
   });

   // Routes
   app.get('/', (req, res) => {
     res.send('Hello from Node.js and MongoDB');
   });

   app.listen(port, () => {
     console.log(`App running at http://localhost:${port}`);
   });
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این یک سرور اکسپرس اولیه را راه اندازی می کند و آن را به یک نمونه MongoDB در حال اجرا متصل می کند mongodb://mongo:27017/testdb. حالا بیایید آن را Dockerize کنیم.


ایجاد یک Dockerfile برای Node.js

در مرحله بعد، باید a ایجاد کنیم Dockerfile که محیط را برای برنامه Node.js ما تعریف می کند. الف Dockerfile اساساً طرحی برای ساختن تصویر Docker است که شامل برنامه شما می شود.

یک فایل به نام ایجاد کنید Dockerfile در ریشه دایرکتوری پروژه خود و موارد زیر را اضافه کنید:

# Use the official Node.js image from Docker Hub
FROM node:16

# Set the working directory inside the container
WORKDIR /app

# Copy package.json and install dependencies
COPY package*.json ./
RUN npm install

# Copy the rest of the app files
COPY . .

# Expose the port the app runs on
EXPOSE 3000

# Command to run the app
CMD ["node", "index.js"]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این Dockerfile خواهد شد:

  1. از تصویر رسمی Node.js استفاده کنید.
  2. دایرکتوری کاری را تنظیم کنید /app.
  3. را کپی کنید package.json و وابستگی های لازم را نصب کنید.
  4. بقیه فایل ها را کپی کنید و نقطه ورود را برای اجرای برنامه Node.js تنظیم کنید.

راه اندازی MongoDB و MongoExpress با Docker Compose

به‌جای اجرای همه سرویس‌ها به صورت جداگانه، از آن استفاده خواهیم کرد Docker Compose برای تعریف و مدیریت محیط چند کانتینری ما. Docker Compose به ما امکان می دهد خدمات، شبکه ها و حجم ها را در یک تعریف کنیم docker-compose.yml فایل، تنظیم کردن کل پشته ما را آسان می کند. نکته ای که باید به خاطر بسپارید این است که هنگام استفاده از docker compose نیازی به ایجاد شبکه نداریم، آن به طور خودکار یک شبکه برای چندین کانتینر تعریف شده در فایل yaml ایجاد می کند.

ایجاد یک docker-compose.yml فایل در ریشه پروژه:

version: '3'
services:
  nodeapp:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - .:/app
    depends_on:
      - mongo
  mongo:
    image: mongo
    ports:
      - '27017:27017'
  mongo-express:
    image: mongo-express
    ports:
      - '8081:8081'
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_SERVER: mongo
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این پیکربندی سه سرویس را تعریف می کند:

  1. nodeapp: برنامه Node.js ما.
  2. مونگو: یک نمونه MongoDB که روی پورت اجرا می شود 27017.
  3. mongo-express: یک رابط مبتنی بر وب برای مدیریت MongoDB، قابل دسترسی در پورت 8081.

اجرای برنامه

با تنظیم همه چیز، اجازه دهید برنامه را با استفاده از Docker Compose اجرا کنیم.

دستور زیر را در ترمینال خود اجرا کنید:

docker-compose up
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای بستن چندین کانتینر که در حال حاضر از Docker Compose استفاده می کنند

docker-compose down
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Docker Compose تصاویر لازم را می کشد، برنامه Node.js را می سازد و همه سرویس ها را شروع می کند. پس از تکمیل فرآیند، باید گزارش‌هایی را از MongoDB، Node.js و MongoExpress مشاهده کنید.

  • بازدید کنید http://localhost:3000 برای مشاهده اجرای برنامه Node.js.
  • بازدید کنید http://localhost:8081 برای دسترسی به MongoExpress و مدیریت پایگاه داده خود.

اتصال Node.js به MongoDB

برنامه Node.js ما قبلاً برای اتصال به MongoDB با رشته اتصال زیر تنظیم شده است index.js:

mongoose.connect('mongodb://mongo:27017/testdb', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این mongo hostname به سرویس MongoDB تعریف شده در ما اشاره دارد docker-compose.yml. Docker Compose به طور خودکار یک شبکه برای سرویس ها ایجاد می کند و به آنها امکان می دهد با نام سرویس خود ارتباط برقرار کنند.


نتیجه گیری

در این پست، ما با موفقیت یک محیط توسعه محلی را با استفاده از Docker برای راه اندازی کردیم Node.js، MongoDB، و MongoExpress. با استفاده از Docker Compose، چندین کانتینر را هماهنگ کردیم تا به طور یکپارچه با هم کار کنند و چرخش یک پشته کاملاً کاربردی را برای توسعه آسان‌تر می‌کند.

با این تنظیمات، می توانید به راحتی خدمات بیشتری اضافه کنید، پایگاه داده های خود را با MongoExpress مدیریت کنید و یک محیط ایزوله بدون نیاز به نصب MongoDB یا سایر وابستگی ها به صورت محلی داشته باشید.

خواندن مبارک!!! لطفا لایک کنید، ذخیره کنید، به اشتراک بگذارید و دنبال کنید!!!


نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا