هدف از این پروژه، مرور مباحث مطرح شده و حل یک موضوع جدید توسط دانشجویان میباشد.
شرایطی را فراهم کنید که دو کانتینر که در یک شبکه نیستند و هیچ راه ارتباطی به وسیله شبکه به صورت مستقیم بایکدیگر ندارند بتوانند پیامی را بین همدیگر مخابره کنند. میتوان کانتینر واسطی را بین این دو کانتینر در نظر گرفت که توسط هر دو کانتینر در شبکه قابل رویت میباشد. شاید تصویر زیر گویاتر باشه:
به عنوان یک سناریو واقعی تصور کنید در هر کانتینر یک و دو، متغیرهای محیطی خاصی با مقادیر خاصی وجود دارد که فقط خود همان کانتینر از آن متغیر و مقدارش اطلاع دارد. فرض کنید میخواهیم این مقادیر بین دو کانتینر یک و دو که هیچ شبکه مستقیم به جز واسط بینشان وجود ندارد به اشتراک گذاشته شود. یعنی مثلا بتوان داخل کانتینر اول به هر نحو و هر روشی که شده، مقدار متغیرهای محیطی مربوطه را از کانتینر دوم پرسوجو کنیم و بالعکس. یکی از روشهای حل این مساله ساده، در این مخزن پیادهسازی شده است. میتوانید فایل docker-compose.yml
را مطالعه کنید تا با نحوه انجام این کار بیشتر آشنا شوید.
git clone https://github.com/amirbagh75/docker-messenger docker-messenger
cd docker-messenger
docker-compose up -d
docker-compose exec app1 sh
/app # curl bridge/app2
دستور curl bridge/app2
یعنی به کانتینر واسط که نام آنرا در این مثال bridge گذاشتیم، درخواست http روی مسیر /app2 ارسال میکنیم. این درخواست توسط کانتینر واسط که در اینجا یک وبسرور Nginx میباشد به کانتینر دوم پراکسی میشود و جواب توسط کانتینر دوم به واسط برمیگردد و در نهایت کانتینر واسط جواب را به کانتینر اول میرساند. جواب بازگشتی بدین صورت میباشد:
{
"APP_ID": "App 2",
"SECRET": "8211584750"
}