2017-09-27 6 views
1

J'essaie de configurer un environnement de développement avec ASP.Net Core et Docker. L'image se construit correctement et le conteneur s'exécute sans problème. Cependant, même si j'ai spécifié que le port est 5000 pour l'hôte et le conteneur, dotnet lance toujours le serveur à une adresse qui ne contient ni le port spécifié, ni est accessible. Je me attendais à l'auditeur d'être à: http://localhost:5000"dotnet run" dans Docker Container entraîne une URL inaccessible

docker-compose up résultats dans:

Recreating netcore_ms1_1 ... 
Recreating netcore_ms1_1 ... done 
Attaching to netcore_ms1_1 
ms1_1 | Hosting environment: Production 
ms1_1 | Content root path: /app 
ms1_1 | Now listening on: http://[::]:80 
ms1_1 | Application started. Press Ctrl+C to shut down. 

Ma demande est juste un exemple dotnet new web modèle app. Voici mes Dockerfile et les fichiers docker-compose.yml:

Dockerfile

FROM microsoft/aspnetcore-build:2.0.0-jessie 
WORKDIR /app 
EXPOSE 5000 
ENTRYPOINT ["dotnet", "run", "--server.urls", "http://0.0.0.0:5000"] 

docker-compose.yml

version: '3' 
services: 

    ms1: 
    build: ./ms1 
    ports: 
     - "5000:5000" 
    volumes: 
     - ./ms1:/app:Z 

Quelqu'un peut-il me indiquer ce que je suis absent ?

question supplémentaire

Comment puis-je procéder pour exécuter les outils Dotnet Watcher dans un conteneur Docker, plus spécifiquement pour exécuter dotnet watch run et surveiller les changements de fichiers dans le ./ms1 de volume monté?

Merci d'avance, toute aide est très appréciée.

+0

On dirait qu'il est à l'écoute sur 80 mais vous essayez d'accéder 5000. solution est probablement plus facile d'avoir 5000 redirect à 80 dans 'docker-compose.yml'. – kichik

+0

J'ai essayé de changer le port dans docker-compose.yml, mais le résultat est le même. –

+0

Est-ce que le port est changé Si vous avez 'dotnet run --server.urls" http://0.0.0.0:5000 "' depuis la console? '--server.urls' fonctionne uniquement si vous activez explicitement la lecture des configs à partir des arguments (lors de la configuration de WebHost). Avez-vous ajouté '.AddCommandLine (args)'? Regardez dans [WebHostBuilder. Comment faire pour définir l'adresse URL en utilisant CommandLine dans .NET-Core 2.0] (https://stackoverflow.com/questions/45710570/webhostbuilder-how-to-set-url-address-using-commandline-in-net-core-2 -0/45712524 # 45712524) si besoin d'échantillon. – Set

Répondre

0

Lorsque vous utilisez microsoft/aspnetcore-build ou microsoft/aspnetcore, l'image est pré-configuré pour exposer le port 80. Lancez votre conteneur comme ceci:

FROM microsoft/aspnetcore-build:2.0.0-jessie 
WORKDIR /app 
ENTRYPOINT ["dotnet", "run"] 

Sur la ligne de commande,

docker run -p 5000:80 

Ou dans docker -compose.yml,

ports: 
    - "5000:80" 

Cette valeur par défaut vient du nombre ion des images microsoft/aspnetcore, qui définissent la variable d'environnement ASPNETCORE_URL sur http://+:80.

ENV ASPNETCORE_URLS http://+:80 

Voir https://github.com/aspnet/aspnet-docker/blob/v2.0.0/2.0/jessie/runtime/Dockerfile#L4