0

Ich bin .net Core App auf Docker bereitstellen.Docker kann keine .net-Standardklassenbibliotheken auflösen, bei der Bereitstellung von .net Core App auf Docker

Meine Docker Datei ist wie folgt, die in meiner .net Kernanwendung hinzugefügt wird:

FROM microsoft/dotnet:1.1-sdk-projectjson 

COPY . /app 
WORKDIR /app 

RUN ["dotnet", "restore"] 
RUN ["dotnet", "build"] 

EXPOSE 5000/tcp 
ENV ASPNETCORE_URLS http://*:5000 

ENTRYPOINT ["dotnet", "run"] 

Sein nicht in der Lage .net Standard-Klassenbibliotheken zu lösen, die zu meiner .net Kernanwendung hinzugefügt werden.

Meine Projektstruktur ist wie folgt:

Core folder 

    -Logging.Interfaces .net std project 

    -Logging.Entities .net std project 

Infrastructure folder 

    -Infrastructure.Logging .net std project 

Services folder 

    -Services .net std project 

Web folder 

    -Web .net core application 

Abhängigkeiten Abschnitt project.json der Web-Anwendung ist wie folgt:

{ 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.0", 
     "type": "platform" 
    }, 
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.1", 
    "Microsoft.AspNetCore.Routing": "1.0.1", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Services": "1.0.0-*", 
    "DomainInterfaces": "1.0.0-*", 
    "Core.Logging.Interfaces": "1.0.0-*", 
    "Core.Logging.Entities": "1.0.0-*", 
    "Infrastructure.Logging": "1.0.0-*" 
    }, 

Wenn ich folgenden Befehl ausführen, um Bild zu erzeugen, gibt es mir Fehler:

[email protected]_name MINGW64 path to solution 
$ docker build -t helloWorld:core . 

Unable to resolve 'Core.Logging.Interfaces (>= 1.0.0)' for '.NETCoreApp,Version=v1.1'. 
    Unable to resolve 'Core.Logging.Entities (>= 1.0.0)' for '.NETCoreApp,Version=v1.1'. 
    Unable to resolve 'Services (>= 1.0.0)' for '.NETCoreApp,Version=v1.1'. 
    Unable to resolve 'Infrastructure.Logging (>= 1.0.0)' for '.NETCoreApp,Version=v1.1'. 
    Unable to resolve 'DomainInterfaces (>= 1.0.0)' for '.NETCoreApp,Version=v1.1'. 

Kann jemand bitte führen, was schief geht über er Re, wie ich Docker völlig neu bin.

+0

wo speichern Sie dockerfile? –

+0

Meine Docker-Datei befindet sich im Web-Projekt, das die .net-Kernanwendung ist. Und alle anderen Projekte werden als Referenz in meiner Webanwendung hinzugefügt. –

+0

Sie sollten versucht werden, Dockerfile in die Lösung als/src-Ordner zu platzieren. –

Antwort

0

Ich denke, man sollte versucht werden eine Dockerfile auf Lösungsebene zu schaffen, wie Struktur folgt:

/IhrProjekt

  • src
    • Kern
    • Infrastruktur
    • Dienstleistungen
    • WebApp
  • Dockerfile

und ändert Inhalt von Dockerfile zu:

FROM microsoft/dotnet:1.1-sdk-projectjson 

COPY . /app 
WORKDIR /app/src/WebApp 

RUN ["dotnet", "restore"] 
RUN ["dotnet", "build"] 

EXPOSE 5000/tcp 
ENV ASPNETCORE_URLS http://*:5000 

ENTRYPOINT ["dotnet", "run"] 

Hope this Hilfe!

+0

Wenn ich Dockerfile ändere und den Befehl docker build ausführe, erhalte ich den Fehler "Konnte Projekt.json im aktuellen Verzeichnis nicht finden". –

+0

Können Sie sich bitte die Antwort ansehen und die Struktur erneut überprüfen? –

0

Meine dot net core-Anwendung hat auch keine project.json-Datei. Ich habe mein Problem mit folgendem behoben: FROM microsoft/dotnet:1.1-sdk anstelle von FROM microsoft/dotnet:1.1-sdk-projectjson

Verwandte Themen