J'ai une application web de base asp.net que j'essaye de faire fonctionner dans un conteneur Docker.dotnet run n'utilisera pas de paquets bower
De Powershell, dans le fichier de projet, je peux courir > dotnet restore
alors > dotnet run
et il exécutera un conteneur docker:
PS E:\Projects\...> dotnet run
Project MyProject (.NETCoreApp,Version=v1.1) was previously compiled. Skipping compilation.
Hosting environment: Production
Content root path: E:\Projects\...
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
Le seul problème est que quand je vais à localhost:5000
, il apparaît comme les paquets de Bower (comme Angular) ne sont pas installés. Alors que les pages/contrôleurs fonctionnent tous, Angular ne fonctionnera pas.
Il ne retourne pas un 404 non trouvé, il ne lie pas tout le matériel angulaire.
Si j'exécute le même projet à partir de Visual Studio (2015), il inclut/exécute Angular sans soucis, et le site semble devoir fonctionner. En regardant la source, vous pouvez voir que les fichiers angulaires ont été inclus.
Mon DockerFile est:
FROM microsoft/aspnetcore-build
WORKDIR /app
COPY published .
ENTRYPOINT ["dotnet", "MyProject.dll"]
mais je pense que c'est un problème avec la commande dotnet run
.
Comment puis-je m'assurer que les paquets de tondeuses sont inclus et qu'ils passent dans le conteneur du docker?
Modifier 1
J'ai essayé de faire dotnet build
puis bower install
alors dotnet run
sans chance. Après que j'ai essayé de le publier avec dotnet publish -o published
et puis l'ai couru avec dotnet MyProject.dll
du répertoire publié et il a fait la même chose.
Quand je lance le projet de Visual Studio la page a tous les scripts inclus:
...
<script src="/lib/jquery/dist/jquery.js"></script>
<script src="/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script src="/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="/js/site.js?v=EWaMeWsJBYWmL2g_KkgXZQ5nPe-a3Ichp0LEgzXczKo"></script>
<script src="/lib/angular/angular.js?v=IuVz88ct2cRJMIP8PVY9rcWTcd2eXzzvz3cdkmfoX2k"></script>
...
Mais quand je le lance à l'aide à la fois dotnet run
et dotnet publish
puis dotnet MyProject.dll
ces scripts ne sont pas inclus dans la page source.
fixe
se trouve que je courais dotnet run
, ce qui signifiait qu'il était en cours d'exécution en mode de production.
Il existe un fichier dans les vues Views\Shared\Components\_EnvironmentFooter.cshtml
où tous les scripts sont inclus pour la page. Le seul problème était que les scripts étaient inclus dans l'environnement de développement, mais pas dans l'environnement de production. J'ai inclus les scripts de développement dans l'environnement Production/Staging - Ce n'est plus un problème.
Bonjour Tim, merci pour votre réponse. J'ai donné un coup de pouce (voir la question mise à jour) – Chris