سلام به همگی تو این مقاله قصد دارم توضیح بدم که چطور وقتی چندتا سرویس داریم بتونیم تون ها رو در غالب کانتینر های داکر بالا بیاریم و ازشون استفاده کنیم حالا این سرویس ها میتونه با هر زبانی نوشته شده باشه و ربطی به تکنولوژی هایی که برای پیاده سازی سرویس هامون استفاده کردیم هم نداره.
خب سناریو این شکلیه که ما چند تا سرویس ساده داریم که اتفاقا انقدرهم ساده هستن هیچ uiی هم ندارن و هر سرویس یک کنسول اپلیکیشن سادس حالا این سرویس ها بهم یه سریاشون ربط دارن مثلا توی محیط production اول باید سرویس 2 اجرا بشه که به طبع اون سرویس 3 بتونه اجرا بشه و از امکانات سرویس 2 استفاده کنه یا مثلا کل سرویس هامون نیازه به redis دسترسی داشته باشن پس اول از همه باید redis اجرا بشه.
خب الان که سناریو رو متوجه شدیم فکر میکنم بریم برای توضیحات مربوطه خوبه.
مرحله اول اینه که روی پروژه توی VS کلیک راست میکنیم و add و بعدش هم docker support رو انتخاب میکنیم و تنظیمات خودمون رو مبنی بر اینه قراره لینوکس باشه و یا ویندوز یا این موارد انجام میدیم.
بعد از اینکه داکرفایلمون رو ویژوال استودیو ایجاد کرد میریم سراغ کار با داکر اما اینو یادتون باشه معمولا یه ایرادی که اینجا وارد میشه ویژوال استودیو میاد متناسب با اپلیکیشن های وب داکر فایل رو ایجاد میکنه که شما باید یه تغییری بدین و بزارینش روی نسخه های کامل دات نت مثلا aspnet:8.0
خب حالا وقت اینه که از داکر فایلتون یه image بسازید که خیلی راحت توی مسیری که داکر فایل هست یه cmd یا powershell باز میکنید و این دستور رو اجرا میکنید
docker build -t "service1" .
خب این دستور از پروژتون یه داکر ایمیج با اسم service1 ایجاد میکنه.
اگه بخواین از این ایمیج هم یه کانتینر بسازید و رانش کنید میتونید بزنید
docker run -itd --name "service1" "service1"
که این دستور توی محیط اینتر اکتیو ودیتچ کانتینری با اسم service1 از ایمیجی با نام service1 ایجاد و ران میکنه. اون دیتچ هم یعنی با بسته شدن پنجره کنسول کانتینر منو نبند و اینتراکتیو هم یعنی به م اجازه برقراری با اپلیکیشنم توی محیط کانتینر رو بده.
تا اینجا تمام ما یه برنامه رو به همین راحتی داکر کردیم و تونستیم توی داکر اجراش کنیم.
حالا وقت اینه سناریو رو ببریم سمت پیشرفته تر شدن که بالا توضیح دادم میتونید برای خودتون چندتا سرویس رو ایمیج کنید و این مراحلی که در ادامه گفته میشه تست کنید .
ما میخوایم چندتا سرویس توی یه شرایط خاصی اجرا بشه که بالاتر توضیح دادم پس وقتی قراره همچین شرایطی داشته باشیم باید بریم سراغ docker-compose که چیز خاصی هم نیست فقط یه ماژول روی داکره که مدیریت کانتینر ها رو راحت تر میکنه.
پس اینجا یه نمونه از داکر کامپوز مینویسم که چندتا سرویس رو توی شرایط خاص ران میکنه
version: '3.8' # Specify the version of Docker Compose
services:
redis:
image: redis:latest # Use the official Redis image
container_name: redis # Specify the container name
restart: always # Restart policy
ports:
- "6379:6379" # Expose Redis port
networks:
- default # Use the default bridge network
service1:
image: service1 # Specify the image name
container_name: service1# Specify the container name
restart: always # Restart policy
command: "192.168.1.1" # Command to run with the container
stdin_open: true # Keep STDIN open
tty: true # Allocate a pseudo-TTY
depends_on:
- redis # Ensure this service starts after redis
service2:
image: service2 # Specify the image name
container_name: service2 # Specify the container name
restart: always # Restart policy
ports:
- "6969:6969" # Map port 6969 from the container to the host
command: ["0.0.0.0", "6969", "http://localhost"] # Command to run with the container
depends_on:
- redis # Ensure this service starts after redis
service3:
image: service3 # Specify the image name
container_name: service3 # Specify the container name
restart: always # Restart policy
command: ["http://host.docker.internal:80", "192.168.1.1", "192.168.1.1:6969"] # Command to run with the container
depends_on:
- service1 # Ensure this service starts after the tcp service
- redis # Ensure this service starts after redis
stdin_open: true # Keep STDIN open
tty: true # Allocate a pseudo-TTY
networks:
default:
driver: bridge # Use the default bridge network
خب این داکر کامپوز من برای 3 تا سرویسی که نوشتم و یدونه هم redis که قبل همه باید ران بشه خوندش هم که خیلی راحته اول ردیس اجرا میشه پورت هاش رو دریافت میکنه و تمام تو مرحله بعدی service1 بعد هم service2 و در نهایت service3 ولی نکته ای که توی service 3 هست اینه که به service 2 و redis وابستگی داره یعنی باید اول اونها اجرا بشن بعد این اجرا بشه البته تمام service ها به redis وابسته هستن و تمام.
مقاله برنامه نویسی پیمان دهقان ۲۶۵


تفاوت hashset و list
در این مقاله به بررسی hashset و مقایسه آن با لیست ها میپردازیم
۱۴۰۳/۰۴/۰۱
۳۲۰
پیمان دهقان

شخصی سازی identity
در این مقاله قصد دارم یکم identity مایکروسافت رو شخصی سازی کنم
۱۴۰۳/۰۳/۲۵
۳۳۴
پیمان دهقان


