به روزرسانی (Update) برنامه ی داکری

به روزرسانی (Update) برنامه ی داکری

به عنوان یک درخواست کوچک از تیم توسعه ی محصول می خواهیم که وقتی هیچ موردی ثبت نشده است، پیام نمایش داده شده تغییر کند. مثلا به جای پیام کنونی (No items yet! !Add one above)، پیام !You have no todo items yet نمایش داده شود.

به روزرسانی کد برنامه

  1. در فایل src/static/js/app.js، درخط 56، پیام را به روز کنید.
  2. حالا باید یک image جدید از برنامه ی به روز شده بسازید. این کار را با همان دستوری که قبلا هم از آن استفاده کردیم انجام می دهیم.
docker build -t getting-started .
  1. حالا باید یک کانتینر جدید از روی این image بسازید.
docker run -dp 3000:3000 getting-started

اوه! به خطا خوردیم که... خطای زیر رو مشاهده خواهید کرد:

docker: Error response from daemon: driver failed programming external connectivity on endpoint <<container-name>> (<<container-id>>) : Bind for 0.0.0.0:3000 failed: port is already allocated.

خب چه اتفاقی افتاد؟!

ما نمی توانیم کانتینر جدید را راه اندازی کنیم. به این دلیل که کانتینر قبلی درحال اجراست. دلیل این خطا به طور خیلی ساده، این است که روی یک ماشین، فقط یک پردازه می تواند از یک Port استفاده کند. کانتینر قبلی درحال حاضر از Port با شماره ی 3000 استفاده می کند. برای برطرف کردن این خطا کافیست کانتینر قبلی را حذف کنید.

جایگزینی کانتینر قبلی ما

برای حذف یک کانتینر، نیاز است ابتدا آن را متوقف (stop) کنید. بعد از متوقف شدنش، می توانید آن را حذف کنید.

حذف کانتینر با استفاده از CLI

  1. ID کانتینر را با استفاده از دستور docker ps بدست بیاورید.
docker ps
  1. با استفاده از دستور docker stop کانتینر مورد نظر را متوقف کنید.
docker stop <the-container-id>
  1. بعد از اینکه کانتینر متوقف شد می توانید با استفاده از دستور docker rm آن را حذف کنید.
docker rm <the-container-id>

توجه: شما می توانید با یک دستور کانتینر را متوقف و حذف کنید. برای این کار لازم است حالت force (زوری) را روی دستور docker rm بزنید. مانند:

docker rm -f <the-container-id>

حالا دیگر می توانید کانتینر برنامه ی به روز شده تان را اجرا کنید.

docker run -dp 3000:3000 getting-started

مرورگرتان را Refresh کنید تا تغییراتی که اعمال کردید را مشاهده کنید.

 

خلاصه:

برنامه مان را آپدیت کردیم ولی دو نکته هم پیش آمد که باید به آنها دقت کنیم:

  • همه ی اطلاعات برنامه مان از دست رفت و این اتفاق خوبی نبود! به زودی درباره ی این موضوع با هم صحبت می کنیم.
  • مجبور شدیم برای یک تغییر کوچک، کارهای زیادی انجام دهیم. در ادامه به این موضوع خواهیم پرداخت که چطور کدمان را به روز (Update) کنیم، بدون آنکه مجبور شویم برای هر تغییر کوچک، دوباره Image بسازیم و یک کانتینر جدید راه اندازی کنیم.

قبل از صحبت کردن درباره ی Persistence یا همان ماندگاری، نگاهی می اندازیم به این که چطور می توانیم image ای که ساخته ایم را با دیگران به اشتراک بگذاریم.

 

 

دوره در دست تالیف است ... rocket
نظرات
اگر login نکردی برامون ایمیلت رو بنویس: