Docker 无法解析 .net 标准类库,将 .net 核心应用部署到 Docker 时



我正在将.net core应用程序部署到Docker。

我的 docker 文件如下所示,它已添加到我的 .net core 应用程序中:

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"]

它无法解析添加到我的 .net 核心应用程序中的 .net 标准类库。

我的项目结构如下:

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

Web应用程序的project.json的依赖部分如下:

{
  "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-*"
  },

当我运行以下命令以创建图像时,它给了我错误:

user@machine_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'.

有人可以指导一下,这里出了什么问题,因为我是 Docker 的新手。

我认为您应该尝试在解决方案级别创建Dockerfile,结构如下:

/您的项目

  • 来源
    • 核心
    • 基础设施
    • 服务业
    • 网络应用
  • Dockerfile

并将 Dockerfile 的内容更改为:

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"]

希望这有帮助!

我的 dot net 核心应用程序也没有 project.json 文件。我通过以下方式解决了我的问题:FROM microsoft/dotnet:1.1-sdk而不是FROM microsoft/dotnet:1.1-sdk-projectjson

最新更新