Ich bin neu zu Docker und ich versuche, 2 Container, eine laufende MongoDB und eine laufende Web-Anwendung.Docker-komponieren mit .NET Core unerreichbar
Das Problem ist, dass ich nicht über localhost: 5000 oder 0.0.0.0:5000 auf meine .NET-Kernanwendung zugreifen kann.
Mongo läuft gut.
Hier ist meine Docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
mongo:
build: ../../../docker/wishare-mongo/
volumes:
- ../../../docker/wishare-mongo:/data/db
ports:
- "27017:27017"
Dockerfile für .NET Core-App
FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app
ENV ASPNETCORE_URLS="http://*:5000"
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/out .
EXPOSE 5000
ENTRYPOINT ["dotnet", "Wishare-Integration-Api.dll"]
Der Docker-compose bauen und Docker-komponieren oben läuft, ohne einen Fehler mit dieser resultierenden für Web-Container:
web_1 | Hostingumgebung: Produktion web_1 | Inhaltsstammpfad:/app web_1 | Jetzt zuhören: http://[::]:80 web_1 | Die Anwendung wurde gestartet. Drücken Sie Strg + C, um zu schließen.
Und das ist das Ergebnis von Docker ps, Port 5000 sollte basierend auf Docker ps Ergebnis exportiert werden.
Irgendwelche Ideen?
Der Ausgang zeigt an, dass die App Port 80 im Container abgehört hat. Haben Sie etwas in Ihrem App-Start, das den Port explizit auf 80 setzt? Das kann die Umgebungsvariable überschreiben. – nlawalker
Versuchen Sie außerdem, auf dem Host explizit 127.0.0.1 anstelle von localhost zu verwenden. Ich habe einige Umgebungen gesehen, in denen localhost nicht funktioniert. – nlawalker
Um Ihre Fragen zu beantworten, @Nlawalker nein, ich habe nichts geändert, wenn die App direkt über VS anstelle von Docker läuft es lädt Port 5000. Auch nicht funktioniert 127.0.0.1 weder auf Port 5000, noch 80 –