2017-03-01 1 views
0

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.

Répondre

0

Il s'avère que je n'ajoutais pas les scripts de bower au code de production. Voir modifier ci-dessus.

1

Les dépendances de Bower sont généralement gérées par dotnet publish en fonction de l'élément scripts de project.json.Si vous ne voulez pas exécuter dotnet publish, essayez d'exécuter bower install entre dotnet restore et dotnet run.

+0

Bonjour Tim, merci pour votre réponse. J'ai donné un coup de pouce (voir la question mise à jour) – Chris