ASP.NET 5: docker construire avec multi-projets solution
Je suis en train de créer une image de mon ASP.NET 5 solution qui est composé de 4 projets. Voici la structure:
- FlashTools (ASP.NET 5 bibliothèque de classe)
- Modèles (ASP.NET 5 bibliothèque de classe)
- QuizzCorrector (ASP.NET 5 Application Web)
- QuizzService (ASP.NET 5 bibliothèque de classe)
J'ai une simple Dockerfile qui ressemble à ceci:
FROM microsoft/aspnet
COPY . /app
WORKDIR /app
RUN ["kpm", "restore"]
EXPOSE 5004
ENTRYPOINT ["k", "kestrel"]
Mais vous ne savez pas où le mettre. Dans le dossier racine de ma solution où un mondial.json est ou dans mon dossier de l'Application Web où mon projet.json est?
Bien sûr, je l'ai modifié en fonction de l'endroit où ce fichier est situé.
Toute façon à la fois semble fonctionner car il télécharger toutes les bibliothèques dont j'ai besoin lorsque je lance la commande
docker construire -t quizzcorrector .
Mon problème est que à un moment docker me dit
Incapable de localiser les Modèles >= 1.0.0
Incapable de localiser FlashTools >= 1.0.0
Incapable de localiser QuizzService >= 1.0.0
J'ai vu sur ce fil https://github.com/aspnet/aspnet-docker/issues/19 que dans un environnement multi-projets solution, nous devrions lancer la commande "kpm" pack pour pack mon application dans un déploiement et une forme exécutable.
Je ne pouvais pas trouver des exemples de Dockerfiles avec le kpm pack de commande de la documentation: https://github.com/aspnet/Home/wiki/Package-Manager
Aussi, je l'ai bien sûr essayé d'utiliser AJOUTER ou COPIE commandes dans mon Dockerfile pour copier le contenu de mes projets dans le système de fichiers du conteneur, mais toujours la même erreur.
Merci de m'aider
OriginalL'auteur Jérôme MEVEL | 2015-03-05
Vous devez vous connecter pour publier un commentaire.
Mise À Jour: 14 Février 2018
Ma réponse précédente ne prend pas en compte les meilleures pratiques pour la rédaction des Dockerfile. Il ne fonctionne pas pour ceux des solutions qui ont de multiples projets web où chaque application doit s'exécuter dans un autre conteneur Docker. La meilleure façon serait de construire et de publier ASP.NET application de Base dans un environnement de développement et de lancer l'application dans le menu fixe conteneur qui est optimisé pour une utilisation en production.
Mettre le contenu suivant en cela
dotnet publish -c Release -o publish
docker build -t QuizzCorrector
Noter que
microsoft/aspnetcore
Docker image est uniquement à l'exécution de l'image qui ne fournit pas .NET SDK de Base ce qui le rend plus léger et mieux pour une utilisation en production.Il pourrait être en retard, mais je vais répondre à cette question pour ceux qui sont encore en train d'essayer de le faire fonctionner. Vous devez créer un Dockerfile sur le niveau de la solution. Ensuite, vous devez mettre à jour votre dossier de travail pour utiliser l'un où vous web projet est situé. Voici ci-dessous la finale Dockerfile, compte tenu quekpm
etk
utilitaires ont été remplacés par undotnet
outil.Merci. Il a fallu 2 jours pour trouver cette solution.
Que faire si vous avez deux projets dans votre solution et vous souhaitez le publier sous forme de deux applications web. Pouvez-vous faire le travail si votre dockerfile n'est PAS sur le niveau de la solution? J'ai besoin d'être dans leur séparer les projets...
J'ai mis à jour ma réponse
Si vous regardez th eDockerfile dans le eShopOnContainers projet, ils sont dans le porject dossier, mais ensuite l'exécuter avec le système de fichiers racine contexte, de sorte que les chemins vers d'autres projets sont par rapport à ce contexte. Le faire de la même manière nouvelle ici signifie que vous avez à construire le projet, puis exécutez le panneau-composition de construire puis exécutez le panneau-composer. J'ai utilisé pour faire la mise à jour ici, mais ensuite changé comme il se gênant.
OriginalL'auteur Alexey Andrushkevich
Pour Référence Future & quelqu'un ayant le même problème.
Microsoft a publié Un Échantillon dotnet application de base avec des conteneurs docker dotnet-architecture/eShopOnContainers Projet ici
Vous pouvez consulter le lien ou trouver l'Exemple ci-dessous
Exemple :
OriginalL'auteur Yehia Amer
Pour être en mesure de construire et d'exécuter plusieurs xprojects dans DockerHub avec ASP.NET CORE 1.0 j'ai eu un problème similaire. Ce qui m'a conduit ici, et m'a aidé. Ma solution était:
Structure de la Solution
Dockerfile:
OriginalL'auteur Geir Ivar Jerstad
Est peut-être pas en retard pour cette réponse.
Dans ce post http://dev.widemeadows.de/2015/09/08/fun-with-asp-net-5-beta7-bliss-build-errors-dockerfiles-and-reverse-proxies/ que vous avez à faire un fichier qui est sur la solution de référence et de tous les projets, en se référant au projet de départ.
OriginalL'auteur betim