{"id":17717923,"url":"https://github.com/ohmydevops/docker-messenger","last_synced_at":"2026-05-10T06:54:24.310Z","repository":{"id":72047700,"uuid":"370818746","full_name":"ohmydevops/docker-messenger","owner":"ohmydevops","description":"The final project of Greenweb holding Docker course","archived":false,"fork":false,"pushed_at":"2021-05-27T11:57:24.000Z","size":9,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-08-02T13:57:40.041Z","etag":null,"topics":["docker","docker-compose"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ohmydevops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-25T20:22:52.000Z","updated_at":"2023-08-02T13:57:40.042Z","dependencies_parsed_at":null,"dependency_job_id":"e55c7356-f072-4917-8de9-43d420ca4301","html_url":"https://github.com/ohmydevops/docker-messenger","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohmydevops%2Fdocker-messenger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohmydevops%2Fdocker-messenger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohmydevops%2Fdocker-messenger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohmydevops%2Fdocker-messenger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ohmydevops","download_url":"https://codeload.github.com/ohmydevops/docker-messenger/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246466974,"owners_count":20782229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose"],"created_at":"2024-10-25T14:32:54.955Z","updated_at":"2026-05-10T06:54:19.248Z","avatar_url":"https://github.com/ohmydevops.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv dir='rtl'\u003e\n\n### پروژه نهائی بوت‌کمپ آموزشی داکر در هولدینگ گرین‌وب\n\nهدف از این پروژه، مرور مباحث مطرح شده و حل یک موضوع جدید توسط دانشجویان میباشد.\n  \n  \n  ####  صورت مسأله\n\nشرایطی را فراهم کنید که دو کانتینر که در یک شبکه نیستند و هیچ راه ارتباطی به وسیله شبکه به صورت مستقیم بایکدیگر ندارند بتوانند پیامی را بین همدیگر مخابره کنند. میتوان کانتینر واسطی را بین این دو کانتینر در نظر گرفت که توسط هر دو کانتینر در شبکه قابل رویت میباشد. شاید تصویر زیر گویاتر باشه:\n  \n![index](https://user-images.githubusercontent.com/21690865/119820513-cb82fb80-bf06-11eb-807c-9680a35aff03.png)\n\nبه عنوان یک سناریو واقعی تصور کنید در هر کانتینر یک و دو، متغیرهای محیطی خاصی با مقادیر خاصی وجود دارد که فقط خود همان کانتینر از آن متغیر و مقدارش اطلاع دارد. فرض کنید میخواهیم این مقادیر بین دو کانتینر یک و دو که هیچ شبکه مستقیم به جز واسط بین‌شان وجود ندارد به اشتراک گذاشته شود. یعنی مثلا بتوان داخل کانتینر اول به هر نحو و هر روشی که شده، مقدار متغیرهای محیطی مربوطه را از کانتینر دوم پرس‌وجو کنیم و بالعکس. یکی از روش‌های حل این مساله ساده، در این مخزن پیاده‌سازی شده است. میتوانید فایل `docker-compose.yml` را مطالعه کنید تا با نحوه انجام این کار بیشتر آشنا شوید. \n  \n #### نحوه اجرا\n\n\u003c/div\u003e\n  \n```shell\ngit clone https://github.com/amirbagh75/docker-messenger docker-messenger\ncd docker-messenger\ndocker-compose up -d\n```\n\n\u003cdiv dir='rtl'\u003e\n\n#### نحوه پرس‌وجو \n  \nمیتوانید برای نمونه وارد کانتینر شماره یک شوید و یک درخواست http ارسال کنید:\n  \n\u003c/div\u003e\n\n```shell\ndocker-compose exec app1 sh\n/app # curl bridge/app2\n```\n\n\u003cdiv dir='rtl'\u003e\n  \nدستور `curl bridge/app2` یعنی به کانتینر واسط که نام آن‌را در این مثال bridge گذاشتیم، درخواست http روی مسیر /app2 ارسال میکنیم. این درخواست توسط کانتینر واسط که در این‌جا یک وب‌سرور Nginx میباشد به کانتینر دوم پراکسی میشود و جواب توسط کانتینر دوم به واسط برمیگردد و در نهایت کانتینر واسط جواب را به کانتینر اول میرساند. جواب بازگشتی بدین صورت میباشد:\n  \n \u003c/div\u003e\n \n```json\n{\n    \"APP_ID\": \"App 2\",\n    \"SECRET\": \"8211584750\"\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fohmydevops%2Fdocker-messenger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fohmydevops%2Fdocker-messenger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fohmydevops%2Fdocker-messenger/lists"}