An open API service indexing awesome lists of open source software.

https://github.com/ohmydevops/docker-messenger

The final project of Greenweb holding Docker course
https://github.com/ohmydevops/docker-messenger

docker docker-compose

Last synced: about 1 month ago
JSON representation

The final project of Greenweb holding Docker course

Awesome Lists containing this project

README

          

### پروژه نهائی بوت‌کمپ آموزشی داکر در هولدینگ گرین‌وب

هدف از این پروژه، مرور مباحث مطرح شده و حل یک موضوع جدید توسط دانشجویان میباشد.


#### صورت مسأله

شرایطی را فراهم کنید که دو کانتینر که در یک شبکه نیستند و هیچ راه ارتباطی به وسیله شبکه به صورت مستقیم بایکدیگر ندارند بتوانند پیامی را بین همدیگر مخابره کنند. میتوان کانتینر واسطی را بین این دو کانتینر در نظر گرفت که توسط هر دو کانتینر در شبکه قابل رویت میباشد. شاید تصویر زیر گویاتر باشه:

![index](https://user-images.githubusercontent.com/21690865/119820513-cb82fb80-bf06-11eb-807c-9680a35aff03.png)

به عنوان یک سناریو واقعی تصور کنید در هر کانتینر یک و دو، متغیرهای محیطی خاصی با مقادیر خاصی وجود دارد که فقط خود همان کانتینر از آن متغیر و مقدارش اطلاع دارد. فرض کنید میخواهیم این مقادیر بین دو کانتینر یک و دو که هیچ شبکه مستقیم به جز واسط بین‌شان وجود ندارد به اشتراک گذاشته شود. یعنی مثلا بتوان داخل کانتینر اول به هر نحو و هر روشی که شده، مقدار متغیرهای محیطی مربوطه را از کانتینر دوم پرس‌وجو کنیم و بالعکس. یکی از روش‌های حل این مساله ساده، در این مخزن پیاده‌سازی شده است. میتوانید فایل `docker-compose.yml` را مطالعه کنید تا با نحوه انجام این کار بیشتر آشنا شوید.

#### نحوه اجرا



```shell
git clone https://github.com/amirbagh75/docker-messenger docker-messenger
cd docker-messenger
docker-compose up -d
```

#### نحوه پرس‌وجو

میتوانید برای نمونه وارد کانتینر شماره یک شوید و یک درخواست http ارسال کنید:

```shell
docker-compose exec app1 sh
/app # curl bridge/app2
```



دستور `curl bridge/app2` یعنی به کانتینر واسط که نام آن‌را در این مثال bridge گذاشتیم، درخواست http روی مسیر /app2 ارسال میکنیم. این درخواست توسط کانتینر واسط که در این‌جا یک وب‌سرور Nginx میباشد به کانتینر دوم پراکسی میشود و جواب توسط کانتینر دوم به واسط برمیگردد و در نهایت کانتینر واسط جواب را به کانتینر اول میرساند. جواب بازگشتی بدین صورت میباشد:



```json
{
"APP_ID": "App 2",
"SECRET": "8211584750"
}
```