2017-12-15 3 views
0

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.

Docker ps result

Irgendwelche Ideen?

+0

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

+0

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

+0

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 –

Antwort

1

Sieht aus wie .NET verwendet Port 80 in der Produktion, also wenn ich Docker-Datei geändert und Port 80 statt 5000 exportiert und auch Port 5000 in Port 80 in Docker-Compose geändert hat funktioniert es wie angenommen.

Also ich nehme an, um es auf Port 5000 zu starten, wird es einige Konfiguration auf .NET-Seite benötigen.