web-dev-qa-db-fra.com

Comment exécuter l'image de docker produite par VS 2017

Docker noob ici ...

Comment exécuter correctement l'image de menu fixe de votre application Asp.Net CORE produite par Visual Studio 2017 en ligne de commande?

docker run -it -d -p 80:32769 myappimage

ne semble pas fonctionner correctement (l'image s'exécute, mais je ne parviens pas à accéder à mon application)

Remarque: j'ai simplement créé un exemple d'application Web ASP.Net Core dans Studio à l'aide du modèle par défaut et ajouté la prise en charge de Docker (en cochant la case "Ajouter une prise en charge de Docker"). Studio ajoute un fichier docker et certains fichiers composés à cette étape.

Lorsque Visual Studio "exécute" l'image (en appuyant sur F5), je peux accéder à mon application avec succès (via " http: // localhost: 32789 " ou un port d'hôte similaire. L'application à l'intérieur du conteneur est sur le port 80). Mais je ne peux pas comprendre la commande pour l'exécuter moi-même à la ligne de commande. 

Le fichier Dockerfile standard que Studio ajoute à votre projet est ...

FROM Microsoft/aspnetcore:1.1
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebApplication2.dll"]
13
HokieMike

Oui c'est possible. Reconstruisez votre solution dans la configuration Release et essayez d'exécuter le projet docker-compose avec F5 pour vous assurer que l'image est mise à jour et que votre application fonctionne correctement. Exécutez ensuite docker images _ { commande de la console } _. Vous verrez quelque chose comme:

REPOSITORY   TAG      IMAGE ID       CREATED              SIZE
Your.App     latest   673b79a6bb3d   About a minute ago   294 MB

Tout ce dont vous avez besoin est d’exécuter un nouveau conteneur à partir de cette image et de mapper son port exposé sur un port localhost. Par défaut, le port exposé est 80 (regardez Dockerfile). Par exemple:

docker run -d -p 1234:80 --name some_name Your.App:latest

Ensuite, votre application devrait devenir accessible à http://127.0.0.1:1234/.

Explication:

Si la configuration Debug est définie, les images empty non exploitables sont créées par Visual Studio. Il mappe manuellement le conteneur vide sur le système de fichiers pour permettre le débogage, les fonctionnalités "Modifier et continuer", etc. C'est pourquoi l'image dev est inutile sans Visual Studio. Construisez l'image dans la configuration Release pour la rendre utilisable.

Le processus de publication complet est décrit dans la documentation: Visual Studio Tools pour Docker

Publication d'images Docker

Une fois que vous avez terminé le cycle de développement et de débogage de votre fichier application, Visual Studio Tools pour Docker vous aidera à créer l'image de production de votre application. Remplacez la liste déroulante de débogage par Relâchez et construisez l'application. L'outillage produira l'image avec la balise :latest que vous pouvez envoyer à votre registre privé ou Docker Hub.

23
Ilya Chumakov

Vous confondez quelque chose ici. Lorsque vous exécutez votre projet avec F5 dans Visual Studio 2017, vous l'exécutez avec IISExpress sur un port configuré de manière aléatoire. 

Dans Docker, vous n'avez pas IISExpress, votre application est uniquement hébergée par Kestrel (Kestrel est toujours utilisé même derrière IIS/IISExpress, mais agit en tant que proxy inverse). 

Le port par défaut pour Kestrel est 5000, mais vous pouvez également le configurer. Voir mon post ici pour plus de détails sur les méthodes pour configurer l’écoute ip/port. 

0
Tseng