برنامه نویسی

اجرای برنامه سه لایه با استفاده از 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

  • اسکرین شات 2024-04-23 201706

  • فایل های موجود در پروژه کلون شده فعلی
    اسکرین شات 2024-04-23 201728

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

  • بنابراین، پس از راه اندازی Docker Engine با نام، می توان با استفاده از دستور زیر شبکه ایجاد کرد شبکه مونگو

    docker netowrk create mongo-network

    اسکرین شات 2024-04-23 202525

با استفاده از دستور زیر می توانید تمام شبکه ها را مشاهده کنید:

docker network ls

. حال باید تصویر MongoDB را از DockerHub بیرون بکشیم و از آن ظرف بسازیم. سپس باید این کانتینر را در شبکه اجرا کنیم تا با استفاده از Docker Container به پایگاه داده MongoDB دسترسی پیدا کنیم.

اسکرین شات 2024-04-23 202548

  • برای کشیدن تصویر 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

اسکرین شات 2024-04-23 203416

اینجا مونگو تصویر به طور خودکار از 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

اسکرین شات 2024-04-23 212746

اینجا، ظرف با نام 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

اسکرین شات 2024-04-23 233057

  • اکنون باید 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"]

اسکرین شات 2024-04-23 233045

حال باید با ساختن فایل Docker یک Docker Image ایجاد کنیم تا آن را به عنوان یک کانتینر در شبکه اجرا کنیم.

  • باز کن CMD ترمینال داخل

    app

    پوشه پروژه و دستور را اجرا کنید

    docker build -t 21bcp379-assignment

اسکرین شات 2024-04-24 000839

با اجرای دستور بالا یک 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

تصویر WhatsApp 2024-04-24 در 10 44 22

تصویر WhatsApp 2024-04-24 در 11 42 34

همین حالا شما می توانید تصویر خود را در مخزن داکر هاب ببینید

  • تصویر WhatsApp 2024-04-24 در 11 47 31

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

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

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

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