2017-09-06 24 views
0

Cette question assez fondamentale. Microsoft annonce partout le lift and shift approach, ce qui signifie que vous pouvez déplacer les anciens projets ASP.NET MVC (Cloud Service Webroles) dans Docker Containers pour une première publication sur Service Fabric (SF) et ne les transformer que plus tard en ASP.NET Core natif.Publication d'un projet ASP.NET MVC via un conteneur Docker dans la solution Azure Service Fabric

Malheureusement il n'y a nulle part dans toute la description comment le faire:

  • First example Lift and Shift: principale annonce de Microsoft pour placer vieux Webprojects dans un récipient. Mais ils utilisent seulement une approche spéciale "livraison continue" pour la publication qui n'aide pas.
  • Approach with VS Docker Compose support: uniquement comment publier un seul conteneur en tant qu'application autonome. Mais cela ne permet pas d'intégrer le conteneur dans un projet SF complet avec d'autres services. En outre, il ne fonctionne pas avec le Docker-Compose créé en 1. 1 exécute sur ma machine, peut être envoyé à et en quelque sorte exécuté sur le cluster. Mais une webapp n'est toujours pas accessible de l'extérieur.
  • Tutorial how to containerize and include container into SF Solution: La bonne direction avec l'inclusion du récipient dans une solution. Malheureusement, le Webproject qu'ils conteneurisent n'est pas un projet Web ASP.NET à l'échelle réelle. Ce n'est qu'un seul script python. Par conséquent, ils peuvent facilement créer un fichier docker dans ce cas.
  • ASP.Net Core Docker Tutorial from the Docker docs: Voici comment créer un conteneur, plus complexe qu'un seul script Python. Mais encore, ce tutoriel ne dispose que d'un projet ASP.NET Core et utilise une instruction "dotnet publish" qui n'existe pas dans ASP.NET original !?
  • Tous les autres tutoriels pour la migration des applications ASP.NET MVC de vieux Cloud Services à SF, malheureusement, expliquer simplement la mise à jour immédiate à ASP.NET de base (par exemple. Here et here)

Je suis perdu. Je pense que la stratégie devrait être d'écrire un propre fichier docker et de créer un conteneur manuellement comme dans 4 et de suivre ensuite 3 pour intégrer ce conteneur dans une solution SF. À la fin, la question est: Comment écrire le Dockerfile pour conteneuriser un projet ASP.NET MVC?

+0

Ce qui m'embrouille encore plus: Il y a tous ces tutoriels et même ce support natif de docker-composer en studio visuel avec les fichiers docker qui sont créés automatiquement. Mais vous ne pouvez toujours pas l'utiliser ... –

+1

https://www.youtube.com/watch?v=LgKGLT-OL1E. Cette vidéo peut aider. Ici, la personne héberge une application asp.net dans un conteneur et héberge le conteneur dans une machine virtuelle Azure. –

Répondre

2

Répondant à la question de la fin première: Un exemple d'un dockerfile pour un ASP.NET MVC:

FROM microsoft/aspnet:4.6.2 
WORKDIR /inetpub/wwwroot 
COPY /publish . 

qui copie le Web Publier sortie du/publish à votre conteneur.

Pour développer un peu sur les liens que vous mettez dans ci-dessus, il y a des concepts autour des conteneurs qui sont importants:

  • fichier Docker (un fichier qui décrit comment construire un conteneur)
  • Docker composer (un fichier qui peut décrire comment créer et exécuter plusieurs conteneurs) - non requis pour les conteneurs simples
  • Docker hôte (un service qui s'exécute sur un système d'exploitation et peut extraire des images de conteneur et les exécuter)
  • Registre de conteneur (où conteneur les images vivent et se tire à partir de quand un besoin d'accueil de docker pour les exécuter)
  • Outillage Container Visual Studio (vous aide à créer un fichier docker et docker composent des fichiers et intègre avec l'hôte de docker à déboguer et conteneurs exécuter localement)
  • d'intégration de CI vous faites référence à Bullet un au-dessus (Visual Studio Team Services et Visual Studio vous aidant à configurer la création du conteneur et à l'insérer dans un registre de conteneurs)
  • Orchestrateurs (Des éléments multi-nœuds fantaisistes pour exécuter des conteneurs de manière nuageuse. Vous donne la fiabilité et l'évolutivité lors de l'exécution de plusieurs conteneurs dans une solution - également appelés grappes de nœuds - Service Fabric et Kubernetes sont des options ici).

Mettre ce qui précède à la lumière de vos quatre points ci-dessus:

  • Lift et Shift: Conçu comme une solution de bout en bout facile où les pipelines CI/CD sont créés pour vous. Incorpore tout ce qui précède. Il ya est une vidéo ici à travers ce scénario à partir du premier lien ci-dessus: https://channel9.msdn.com/events/Build/2017/T6001.
  • approche avec VS Docker Compose support: Utilisé par le ci-dessus pour pousser manuellement un fichier de composition docker au service de tissu, qui instruit service Tissu à tirer et exécuter les conteneurs à partir d'un registre de conteneurs .
  • Tutoriel comment conteneuriser et inclure conteneur dans SF Solution: Explique comment y parvenir sans utiliser Compose docker ou Visual Studio (qui est votre choix)
  • ASP.Net de base Docker Tutoriel des Docker docs: Juste comment pour construire un conteneur.
+0

Comme je m'y attendais, mais cela est en quelque sorte ne fonctionne pas: 1. AutoGénéré Dockerfile pour tutoriel FabrikamFiber était: ' de Microsoft/aspnet: 4.6.2 la source ARG WORKDIR/inetpub/wwwroot COPY $ {source: -obj/Docker/publish} ' => Votre proposition donne la même erreur que celle générée automatiquement:' Step 4/4: COPY/publish: COPY a échoué: GetFileAttributesEx \\? \ C: \ WINDOWS \ TEMP \ docker-builder148860378 \ publish: ' –

+0

Je pense que vous devez supprimer la barre oblique précédente - voici un lien vers la référence de la commande COPY: https://docs.docker.com/engine/reference/builder/#copy –

+0

2. Poussez manuellement le fichier docker-compose vers Service Fabric ne fonctionne pas. Le même docker-compose fonctionne localement + le conteneur charge et s'exécute sur le cluster. Mais sur cluster, il est dit _page not available_. Je vois le message d'IIS sur le port 80 quand le projet mappé à un autre port. J'ai vu, que pour le débogage local, certains commentaires magiques sont exécutés par VS après la fin du docker-composer: 'docker exec cmd/c" ... tem32 \ inetsrv \ appcmd.exe configurez config -sect: syste ... ationHost/applicationPools /[name='DefaultAppPool'].procModel.identType:LocalSystem/commit: apphost & ... ication/anonymousAuthentication .. "' –

0

Un sidemark pour d'autres qui veulent construire le dockerfile automatiquement créé manuellement:

Le .dockerignore file, qui est également généré automatiquement, mais ignore tout le dossier obj\Docker. Si votre publish manually et votre dossier de publication sont différents, c'est la raison pour laquelle vos références pourraient ne pas être trouvées bien que vous les ayez correctement configurées dans le dockerfile.

+0

Droit - ça m'a un peu plu aussi. Bonne prise –

0

Un autre indice:

Lors de la publication d'une solution sur votre propre attention de salaire de cluster, vous devez configurer manuellement les règles de transfert dans l'équilibrage de charge. Par défaut, seuls les ports 19000 et 19080 sont transférés. Ceci n'est mentionné dans aucun des tutoriels. Vous ne trouvez en quelque sorte que l'information pour ajouter des règles d'équilibrage dans le in depth explanations.