اجرای برنامه سه لایه با استفاده از Docker

Docker-Blog
اجرای برنامه سه لایه با استفاده از Docker
برای اجرای Three Tier Application با استفاده از Docker، ابتدا باید یک Full Stack Project ایجاد کنیم. ما میتوانیم از هر یک از پروژههای Full Stack خود استفاده کنیم، اما اگر یکی نداریم، میتوانیم از پروژه دیگری نیز استفاده کنیم. در اینجا، من از یک پروژه ساده و بسیار آسان در GitLab استفاده کرده ام. لینک این پروژه https://gitlab.com/nanuchi/developing-with-docker است. این پروژه با استفاده از HTML، CSS، JavaScript، Express و MongoDB ساخته شده است.
معماری پروژه ما
-
ابتدا باید Project Repository را از لینک با استفاده از دستور کلون کنید
git clone https://gitlab.com/nanuchi/developing-with-docker
-
-
فایل های موجود در پروژه کلون شده فعلی
برای اجرای یک اپلیکیشن سه لایه، باید سه داکر کانتینر را به طور همزمان اجرا کنیم. بنابراین لازم است همه این کانتینرها در داخل یک شبکه اجرا شوند تا از تعامل آنها با سایر کانتینرها جلوگیری شود.
-
بنابراین، پس از راه اندازی Docker Engine با نام، می توان با استفاده از دستور زیر شبکه ایجاد کرد شبکه مونگو
docker netowrk create mongo-network
با استفاده از دستور زیر می توانید تمام شبکه ها را مشاهده کنید:
docker network ls
. حال باید تصویر MongoDB را از DockerHub بیرون بکشیم و از آن ظرف بسازیم. سپس باید این کانتینر را در شبکه اجرا کنیم تا با استفاده از Docker Container به پایگاه داده MongoDB دسترسی پیدا کنیم.
- برای کشیدن تصویر MongoDB از DockerHub و اجرای آن به عنوان ظرف، باید دستور را اجرا کنیم
docker run -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password --network=mongo-network --name=vikasmongodb -d mongo
اینجا مونگو تصویر به طور خودکار از DockerHub کشیده می شود تا Container در آن اجرا شود حالت جداشدنی با نام vikasmongodb در شبکه شبکه مونگو. Container به صورت پیش فرض اجرا می شود پورت 27017. با استفاده از دستور می توانید تمام کانتینرهای در حال اجرا را بررسی کنید
docker ps
. متغیرهای محیطی نام کاربری و کلمه عبور برای اجرای ظرف نیز عبور داده می شوند. به طور مشابه، ما ظرف دیگری از ایجاد خواهیم کرد بیان با کشیدن تصویر آن از DockerHub.
- Express Container را می توان با استفاده از دستور follow اجرا کرد
docker run -p 8081:8081 -e ME_CONFIG_MONGODB_ADMINUSERNAME=admin -e ME_CONFIG_MONGODB_ADMINPASSWORD=password -e ME_CONFIG_MONGODB_SERVER=vikasmongodb --network=mongo-network --name=vikasmongo-express -d mongo-express
اینجا، ظرف با نام vikasmongo-express برای اتصال پایگاه داده MongoDB با Frontend پروژه در Docker ساخته شده است. همانطور که در بالا توضیح داده شد، ظرف روشن خواهد شد پورت 8081. متغیرهای محیطی Username و Password از MongoDB برای دسترسی به پایگاه داده همراه با نام کانتینر MongoDB در متغیر محیط سرور ارسال میشوند. کانتینر در همان شبکه کانتینر بالا اجرا خواهد شد.
- اکنون لینک را در مرورگر خود باز کنید
localhost:8081
و دو پایگاه داده ایجاد کنید my-db و حساب های کاربری.
ایجاد این دو پایگاه داده ضروری است زیرا Frontend در حین اجرا به آنها نیاز دارد. همچنین، ما باید URL MongoDB ذکر شده در فایل server.js را تغییر دهیم زیرا MongoDB را با استفاده از Docker به جای Local Machine اجرا خواهیم کرد.
- حرکت به
server.js
فایل را در پروژه و جایگزین کنید
mongoUrlLocal
و
mongoUrlDocker
با مقدار زیر
mongodb://admin:password@vikasmongodb:27017
- اکنون باید Dockerfile را که قبلاً در پروژه ارائه شده است حذف کنیم و یک Dockerfile جدید در داخل آن ایجاد کنیم
app
پوشه پروژه با دستورات زیر
FROM node
WORKDIR /app
COPY . .
ENV MONGO_DB_USERNAME=admin
ENV MONGO_DB_PWD=password
RUN npm install
EXPOSE 3000
CMD ["node", "server.js"]
حال باید با ساختن فایل Docker یک Docker Image ایجاد کنیم تا آن را به عنوان یک کانتینر در شبکه اجرا کنیم.
- باز کن CMD ترمینال داخل
app
پوشه پروژه و دستور را اجرا کنید
docker build -t 21bcp379-assignment
با اجرای دستور بالا یک Docker Image با نام تولید می شود 21bcp379-تخصیص و برای آن زمان می برد. پس از ایجاد تصویر، باید آن را به عنوان یک Docker Container اجرا کنیم.
- برای اجرای Image as a Docker Container دستور را اجرا کنید
docker run -d -p 3000:3000 --network=mongo-network --name=21bcp379-app 21bcp379-assignment
پس از اجرای دستور بالا، یک Docker Container را در آن اجرا می کند حالت جداشدنی با نام 21bcp379-تخصیص در همین شبکه
- اکنون لینک زیر را در مرورگر خود باز کنید
localhost:3000
و یک صفحه وب در حال اجرا را مشاهده خواهید کرد.
- برای فشار دادن Docker Image پروژه دستور را اجرا کنید
docker tag 21bcp379-app vikas79/blog-app-21bcp379
و سپس
docker push vikas79/blog-app-21bcp379
همین حالا شما می توانید تصویر خود را در مخزن داکر هاب ببینید