बस यूज़र-डिफ़ाइंड ब्रिज नेटवर्किंग का उपयोग करें। सबसे पहले, डॉकर में विभिन्न प्रकार के नेटवर्क का संक्षिप्त विवरण पढ़कर अपने ज्ञान का लाभ उठाएं:https://docs.docker.com/network/bridge/
दूसरा, अपना खुद का नेटवर्क परिभाषित करें
docker network create foo
इसके बाद, अपने कंटेनर कनेक्टेड run चलाएं इस नेटवर्क के लिए:
docker run --rm --env-file /path/to/variables -d --network foo django_app:test
docker run --rm -d ... --network foo postgres:alpine ...
दोनों कमांड में नोटिस --network foo
. साथ ही आपको जरूरत नहीं है इस मामले में बंदरगाहों को उजागर करने के लिए - उपयोगकर्ता द्वारा परिभाषित नेटवर्क के अंदर यह स्वचालित रूप से किया जाता है:
एक ही उपयोगकर्ता-परिभाषित ब्रिज नेटवर्क से जुड़े कंटेनर स्वचालित रूप से सभी बंदरगाहों को एक दूसरे के सामने उजागर करते हैं, और बाहरी दुनिया के लिए कोई बंदरगाह नहीं। यह कंटेनरीकृत अनुप्रयोगों को एक दूसरे के साथ आसानी से संचार करने की अनुमति देता है, बिना गलती से बाहरी दुनिया में प्रवेश किए बिना।
तीसरा, अपने कंटेनरों को --name bar
. के साथ मानव पठनीय होस्ट नाम दें
docker run ... --network foo --name my-django django_app:test ...
docker run ... --network foo --name my-postgres postgres:alpine ...
और अंत में कनेक्शन स्ट्रिंग को ठीक करें - localhost
. से बदलें कंटेनर नाम के लिए, जैसे my-postgres
:
...
POSTGRES_HOST=my-postgres
...