.net - 在 ASP.NET Core : "no such file or directory" error 中构建 docker

标签 .net docker asp.net-core .net-core dockerfile

我在构建 docker 时遇到错误。

Sending build context to Docker daemon 3.584 kB
Step 1/8 : FROM microsoft/aspnetcore:1.1
 ---> 2628aaa7b8cf
Step 2/8 : ENV ASPNETCORE_URLS "http://*:5000"
 ---> Using cache
 ---> 5dffde204fef
Step 3/8 : ENV ASPNETCORE_ENVIRONMENT "Development"
 ---> Using cache
 ---> 3064358bc0eb
Step 4/8 : ARG source
 ---> Using cache
 ---> 4159d0eb78c0
Step 5/8 : WORKDIR /app
 ---> Using cache
 ---> 61a394c84304
Step 6/8 : EXPOSE 5000
 ---> Using cache
 ---> c7c2309f7085
Step 7/8 : COPY ${source:-obj/Docker/publish} .
lstat obj/Docker/publish: no such file or directory

这是我的 Dockerfile。

FROM microsoft/aspnetcore:1.1
ENV ASPNETCORE_URLS="http://*:5000"
ENV ASPNETCORE_ENVIRONMENT="Development"
ARG source
WORKDIR /app
EXPOSE 5000
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "ProjectTestApi.dll"

然后我运行一个命令:

$ docker build -t my-docker-image-test .

你有什么问题吗?

最佳答案

发生这种情况是因为您没有发布解决方案。错误消息一目了然:

no such file or directory

默认情况下,当您向 ASP.NET Core Visual Studio 2017 项目添加 Docker 支持 时,它会创建一堆 docker-compose.yml 文件,其中一个它们是处理构建过程的 docker-compose.ci.build.yml。然后,当您通过 Visual Studio 构建项目时,会执行完整的 docker-compose 管道。

docker-compose.ci.build.yml的内容,与此类似(显然取决于自定义配置和项目名称):

version: '2'

services:
  ci-build:
    image: microsoft/aspnetcore-build:1.0-1.1
    volumes:
      - .:/src
    working_dir: /src
    command: /bin/bash -c "dotnet restore ./SolutionName.sln && dotnet publish ./SolutionName.sln -c Release -o ./obj/Docker/publish"

正如您在最后一行中看到的,调用了一个 dotnet publish 命令,它实际上构建并发布了您的项目。

所以您的问题的解决方案,将只是在调用 docker 之前构建项目:

dotnet publish ./SolutionName.sln -c Release -o ./obj/Docker/publish
docker build -t my-docker-image-test .

关于.net - 在 ASP.NET Core : "no such file or directory" error 中构建 docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43387693/

相关文章:

c# - 无法从 Docker 中的 ASP.NET Core 3.1 连接到本地 SQL Server

c# - Dotfuscator 是如何工作的?

c# - 对父列表中的每个子列表执行 'OrderByDescending'

c# - .NET Core 2 和 DI - 在构造函数中使用 appsettings.json 中的值?

linux - docker在ubuntu vs linux aarch64上构建

docker - 如何在Windows 10上拉本地构建的Docker镜像?

visual-studio - 启动多个 asp .NET 核心项目时如何更改默认调试配置文件?

c# - 如何无异常(exception)地指示失败的操作(多个应用程序域)?

c# - 如果一个测试没有失败,则运行所有测试

docker - 如何查看kubernetes的入口端点?