मैंने .NET कोर के लिए एक छवि बनाई:

FROM microsoft/dotnet:2.1-sdk AS build-env
WORKDIR /app

EXPOSE 80 443 5000 5001 5010 5011 7000 22676

#ENTRYPOINT [ "bash"]
CMD ["bash"]

मैं इससे एक कंटेनर चलाता हूं docker container run -it --publish 5000:8018 --name versie3001 -v //c/tijd/mount:/app michel03

अच्छी बात यह है कि मैं माउंटेड फाइलें देखता हूं। जब मैं dotnet new razor के साथ एक नई वेबसाइट बनाता हूं और मैं इसे dotnet run के साथ चलाता हूं तो यह पोर्ट 5000/5001 (डिफ़ॉल्ट पोर्ट) पर चलने की कोशिश करता है लेकिन मुझे यह त्रुटि मिलती है:

warn: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to bind to https://localhost:5001 on the IPv6 loopback interface: 'Cannot assign requested address'.
warn: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'.

असल में यह चेतावनी कहता है, लेकिन परिणाम वही होता है, जब मैं स्थानीयहोस्ट पर जाता हूं: 8018 मुझे कोई परिणाम नहीं मिलता है (ERR_CONNECTION_REFUSED)

मुझसे यहां क्या गलत हो रहा है?

मैंने यह कहते हुए एक उत्तर देखा कि मुझे इसे अपने कंटेनरफाइल में करना चाहिए: ENTRYPOINT [ "dotnet", "watch", "run", "--no-restore", "--urls", "https://0.0.0.0:5000"]. यह मुझे त्रुटि नहीं देता (आउटपुट Now listening on: https://0.0.0.0:5000 है), जो अच्छा है, लेकिन यह मेरी स्थानीय मशीन पर https://localhost:8018 से भी कनेक्ट नहीं होता है।

3
Michel 9 अक्टूबर 2018, 12:33

1 उत्तर

सबसे बढ़िया उत्तर

आपका --publish विकल्प पीछे की ओर है: यह -p <hostPort>:<containerPort> है, इसलिए अपने सेटअप के लिए आप --publish 8018:5000 चाहते हैं।

स्टार्टअप मुद्दे एक तरफ, आपको कंटेनर को 0.0.0.0 (या :: 0, अगर आईपीवी 6 काम करता है) पर सुनने के लिए विकल्प की आवश्यकता है। यदि यह लोकलहोस्ट से जुड़ता है तो यह अपने कंटेनर के बाहर से अन्य कंटेनरों से और मेजबान से पहुंच योग्य नहीं होगा।

2
David Maze 9 अक्टूबर 2018, 13:10