در قسمت اول این سری ، ما به بررسی تصاویر داکر و اجرای کانتینر برای برنامه های Node.js توجه کردیم. ما همچنین به راه اندازی یک بانک اطلاعاتی در یک کانتینر و اینکه چگونه حجم و شبکه در تنظیم محیط توسعه محلی شما نقش دارند نگاهی انداختیم. می توانید ماژول ها را کامپایل کرده ، اضافه کنید و برنامه خود را در داخل یک ظرف جدا کنید. این به سرعت بخشیدن به زمان تنظیم برنامه نویس هنگام انتقال به برنامه یا پروژه جدید کمک می کند.
ما همچنین به استفاده سریع از Docker Compose نگاهی سریع خواهیم انداخت تا به شما کمک کند تا روند تنظیم و راه اندازی یک برنامه میکروسرویس کامل به صورت محلی در دستگاه توسعه خود را ساده تر کنید.
- Docker روی دستگاه توسعه شما نصب شده است. می توانید Docker Desktop را از طریق لینک های زیر بارگیری و نصب کنید:
- ثبت نام برای شناسه Docker
- دستگاه نصب در دستگاه توسعه شما.
- یک IDE یا ویرایشگر متن برای ویرایش پرونده ها. من VSCode
را توصیه می کنم. اولین کاری که می خواهیم انجام دهیم بارگیری کد در دستگاه توسعه محلی ما است. بیایید این کار را با استفاده از دستور git زیر انجام دهیم:
git clone [email protected]: pmckeetx / memphis.git
اکنون که کد محلی را داریم ، اجازه دهید نگاهی به ساختار پروژه بیندازیم. کد را در IDE مورد علاقه خود باز کنید و دایرکتوری های سطح root را گسترش دهید. ساختار پرونده زیر را مشاهده خواهید کرد.
ock docker-compose.yml
├── یادداشت-خدمات
│ ├── پیکربندی کنید
│ ├── node_modules
├── nodemon.json
│ ├── pack-lock.json
├── ├── pack.json
└── └── server.js
├── خواندن-لیست-خدمات
│ ├── پیکربندی کنید
│ ├── node_modules
├── nodemon.json
│ ├── pack-lock.json
├── ├── pack.json
└── └── server.js
├── کاربران-سرویس
│ ├── Dockerfile
│ ├── پیکربندی کنید
│ ├── node_modules
├── nodemon.json
│ ├── pack-lock.json
├── ├── pack.json
└── └── server.js
└── یودا
├── README.md
├── node_modules
├── pack.json
├── عمومی
src
arn yarn.lock
این برنامه شامل یک میکرو سرویس دهنده ساده و یک جلوی جلویی است که در React.js نوشته شده است. این از MongoDB به عنوان دیتاستور استفاده می کند.
در قسمت اول این سری ، ما دو سرویس Dockerfiles را برای خدمات خود ایجاد کردیم و همچنین نگاهی به اجرای آنها در ظروف و اتصال آنها به نمونه ای از MongoDb که در یک ظروف در حال اجرا است ، می پردازیم.
روش های بسیاری برای استفاده از Docker و ظروف برای انجام توسعه محلی وجود دارد و بسیاری از آنها به ساختار برنامه شما بستگی دارد. ما با موارد اساسی شروع خواهیم کرد و سپس به تنظیمات پیچیده تری می پردازیم
یکی از ساده ترین راه ها برای شروع استفاده از ظروف در گردش کار توسعه شما استفاده از یک تصویر توسعه است. یک تصویر توسعه تصویری است که تمام ابزارهایی را که برای توسعه و کامپایل برنامه خود نیاز دارید ، دارد.
در این مقاله ما از node.js استفاده می کنیم ، بنابراین تصویر ما باید دارای Node.js نصب شده و همچنین npm یا نخ باشد. . بیایید یک تصویر توسعه ایجاد کنیم که بتوانیم از آن برای اجرای برنامه node.js استفاده کنیم.
Development Dockerfile
یک دایرکتوری محلی در دستگاه توسعه خود ایجاد کنید که ما می توانیم از آن به عنوان یک فهرست راهنما برای ذخیره Dockerfile و سایر موارد استفاده کنیم.
$ mkdir -p ~ / project / dev-image
یک Dockerfile را در این پوشه ایجاد کرده و دستورات زیر را اضافه کنید.
گره FROM: 12.18.3
RUN آپدیت دریافت کنید & amp؛ & amp؛ نصب مناسب
نانو
vim
ما با استفاده از گره شروع می کنیم: تصویر رسمی 12.18.3. فهمیدم که این تصویر برای ایجاد یک تصویر توسعه خوب است. من می خواهم در صورت تمایل به سرعت ویرایش یک پرونده در حالی که درون ظرف است ، چند ویرایشگر متن را به تصویر اضافه کنم.
ما ENTRYPOINT یا CMD را به Dockerfile اضافه نکردیم زیرا ما به ENTRYPOINT و پایه تصویر اعتماد خواهیم کرد. ما هنگام شروع تصویر ، CMD را نادیده می گیریم.
بیایید تصویر خود را بسازیم.
$ docker build -t-node-dev-image.
و اکنون می توانیم آن را اجرا کنیم.
docker $ اجرا شود - it --rm --name dev -v $ (pwd): / کد nash-dev-image bash
شما به شما می خواهد سریعاً دستور bash ارائه شود. اکنون ، در داخل ظرف می توانیم یک پرونده جاوا اسکریپت ایجاد کنیم و آن را با Node.js.
دستورات زیر را اجرا کنید تا تصویر خود را تست کنید.
$ cat < index.js
console.log ("سلام از داخل ظرف ما")
EOF
$ node index.js
خوب. به نظر می رسد که ما یک تصویر توسعه کار داریم. اکنون می توانیم کارهایی را که در ترمینال bash معمولی خود انجام می دهیم انجام دهیم.
اگر دستور فوق داکر را در داخل فهرست سرویس های سرویس یادداشت ها اجرا کردید ، به کد داخل ظرف دسترسی خواهید داشت.
شما می توانید سرویس یادداشت ها را به سادگی با حرکت به فهرست / کد و اجرای npm run npm شروع کنید.
پروژه خدمات یادداشت ها به عنوان فروشگاه داده از MongoDb استفاده می کند. اگر از قسمت اول این سریال به یاد دارید ، ما مجبور بودیم ظرف Mongo را به صورت دستی شروع کنیم و آن را به همان شبکه ای وصل کنیم که سرویس یادداشت های ما در حال اجرا است. ما همچنین مجبور بودیم چندین جلد کتاب ایجاد کنیم تا بتوانیم داده های خود را از طریق مجدداً برنامه خود و MongoDb ادامه دهیم.
در این بخش ، یک فایل کامپوزیت ایجاد می کنیم تا نت های سریال و MongoDb را با یک دستور شروع کنیم. ما همچنین برای تنظیم نت های مربوط به حالت اشکال زدایی ، نوشتن پرونده را تنظیم خواهیم کرد تا بتوانیم یک اشکال زدایی را به فرآیند گره در حال اجرا وصل کنیم.
سرویس یادداشت ها را در IDE یا ویرایشگر متن مورد علاقه خود باز کنید و یک ویرایش جدید ایجاد کنید. پرونده ای به نام docker-compose.dev.yml. دستورات زیر را در پرونده کپی و جایگذاری کنید.
نسخه: '3.8' خدمات: یادداشت: ساختن: متن نوشته: . پورت ها: - 8080: 8080 - 9229: 9229 محیط: - SERVER_PORT = 8080 - DATABASE_CONNECTIONSTRING = mongodb: // mongo: 27017 / notes جلد: - ./:/ کد دستور: npm اشکال زدایی اجرا کنید مونگو: تصویر: mongo: 4.2.8 پورت ها: - 27017: 27017 جلد: - mongodb: / data / db - mongodb_config: / data / configdb جلد: mangodb: mongodb_config:
این پرونده آهنگسازی بسیار مناسب است زیرا اکنون لازم نیست که همه پارامترها را برای انتقال به فرمان run docker تایپ کنیم.
ما در حال قرار دادن درگاه 9229 هستیم تا بتوانیم یک اشکال زدایی را به آن وصل کنیم. ما همچنین در حال نگاشتن کد منبع محلی خود در ظرف در حال اجرا هستیم تا بتوانیم در ویرایشگر متن خود تغییراتی ایجاد کنیم و آن تغییرات را در ظرف برداشت کنیم. تنظیم وضوح سرویس را برای استفاده از نام سرویس ها داشته باشید. بنابراین ما اکنون می توانیم از "mongo" در رشته اتصال استفاده کنیم. دلیل استفاده از mongo این است که دلیل آن این است که ما سرویس mongo را در پرونده تألیف نامگذاری کرده ایم.
بیایید برنامه خود را شروع کنیم و تأیید کنیم که به درستی کار می کند.
$ docker-compose -f docker-compose. dev.yml up --build
ما پرچم "-build" را می گذرانیم تا داکر تصویر ما را کامپایل کند و سپس آن را شروع کنیم.
اگر همه چیز پیش رود شما باید چیزی مشابه را ببینید:
حالا بیایید API خود را تست کنیم. نقطه پایانی دستور curl زیر را اجرا کنید:
$ curl - درخواست کنید GET --url http: // localhost: 8080 / service / m / notes
شما باید پاسخ زیر را دریافت کنید:
{"code": " موفقیت "،" متا ": total" کل ": 0 ،" تعداد ": 0} ،" payload ": []}
ما از دیباگگر استفاده می کنیم که همراه با مرورگر Chrome است. Chrome خود را روی دستگاه خود باز کنید و سپس موارد زیر را در نوار آدرس تایپ کنید.
در مورد: inspect
صفحه زیر باز خواهد شد.
روی پیوند "Open DevTools for Node Open" کلیک کنید. با این کار DevTools که به فرآیند node.js در حال اجرا وصل می شوند در ظرف ما باز می شود.
اجازه دهید کد منبع را تغییر دهیم و یک نقطه شکست را تعیین کنیم.
کد زیر را به پرونده server.js در خط 19 اضافه کنید و پرونده را ذخیره کنید.
server.use ('/ foo'، (req، res) = & gt؛ { بازگشت res.json ({"foo": "نوار"}) })
اگر به ترمینالی که برنامه نویسی ما در آن اجرا شده است نگاهی بیندازید ، می بینید که nodemon متوجه تغییرات شده و برنامه را بارگیری مجدد می کند.
دوباره به Chrome DevTools بروید و نقطه خطی را روی خط 20 و بعد تنظیم کنید. دستور Curl زیر را برای شروع نقطه شکست اجرا کنید.
$ curl - درخواست GET --url http: // localhost: 8080 / foo
💥 BOOM 💥 شما باید کد خط را در خط 20 مشاهده کرده اید و اکنون شما قادر به استفاده از دیباگر دقیقاً مثل شما به طور معمول هستند. شما می توانید متغیرها را بازرسی کرده و تماشا کنید ، نقاط بازشونده شرطی را تنظیم کنید ، اثری از پشته ها و یک دسته از موارد دیگر را مشاهده کنید.
در این مقاله ما به دنبال ایجاد یک تصویر کلی برای توسعه هستیم که می توانیم تقریباً شبیه به خط فرمان عادی خود باشیم. ما همچنین پرونده تألیفی خود را تنظیم کرده ایم تا کد منبع خود را درون ظرف در حال اجرا قرار دهیم و درگاه اشکال زدایی را در معرض دید قرار دهیم.
منابع
- شروع به کار با Docker
- بهترین روش برای نوشتن Dockerfiles
- Docker Desktop
- Docker نوشتن
- نمونه اسکلت پروژه