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
- Host: GitHub
- URL: https://github.com/ohmydevops/docker-messenger
- Owner: ohmydevops
- Created: 2021-05-25T20:22:52.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2021-05-27T11:57:24.000Z (about 5 years ago)
- Last Synced: 2023-08-02T13:57:40.041Z (almost 3 years ago)
- Topics: docker, docker-compose
- Language: PHP
- Homepage:
- Size: 8.79 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
### پروژه نهائی بوتکمپ آموزشی داکر در هولدینگ گرینوب
هدف از این پروژه، مرور مباحث مطرح شده و حل یک موضوع جدید توسط دانشجویان میباشد.
#### صورت مسأله
شرایطی را فراهم کنید که دو کانتینر که در یک شبکه نیستند و هیچ راه ارتباطی به وسیله شبکه به صورت مستقیم بایکدیگر ندارند بتوانند پیامی را بین همدیگر مخابره کنند. میتوان کانتینر واسطی را بین این دو کانتینر در نظر گرفت که توسط هر دو کانتینر در شبکه قابل رویت میباشد. شاید تصویر زیر گویاتر باشه:

به عنوان یک سناریو واقعی تصور کنید در هر کانتینر یک و دو، متغیرهای محیطی خاصی با مقادیر خاصی وجود دارد که فقط خود همان کانتینر از آن متغیر و مقدارش اطلاع دارد. فرض کنید میخواهیم این مقادیر بین دو کانتینر یک و دو که هیچ شبکه مستقیم به جز واسط بینشان وجود ندارد به اشتراک گذاشته شود. یعنی مثلا بتوان داخل کانتینر اول به هر نحو و هر روشی که شده، مقدار متغیرهای محیطی مربوطه را از کانتینر دوم پرسوجو کنیم و بالعکس. یکی از روشهای حل این مساله ساده، در این مخزن پیادهسازی شده است. میتوانید فایل `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"
}
```