在ASP.NET Core中构建docker:“没有这样的文件或目录”错误

问题描述:

我在构建Docker时遇到错误。在ASP.NET Core中构建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 . 

你有任何IDE什么是错的?

+0

你试过我的解决方案吗? –

这是因为您没有发布您的解决方案。错误消息是不言自明:

no such file or directory 

默认情况下,当你添加泊坞支持你ASP.NET核心的Visual Studio 2017年项目,它创建了一堆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命令调用,这实际上建立&发布您的项目。

因此,对于您的问题的解决方案,将调用泊坞窗之前刚刚建设项目:

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

我有同样的问题。我应该在哪里添加这两行?在我的项目的Dockerfile中? – GSPdibbler

+1

@GSPdibbler这些是命令行命令,因此您可以运行docker CLI的相同位置。可能是一个bat文件。 –

当您使用的选项在Visual Studio 2017年“添加泊坞支持”,VS产生一堆docker-compose文件和Dockerfiles。正如Marcin Zablocki所说,其中之一是docker-compose.ci.build.yml

为了与Docker理念保持一致,您可以使用Docker容器来发布您的项目。要发布你的项目,你会采取以下措施:

  1. git clone/pull项目& cd到根目录
  2. 发布项目与docker-compose -f docker-compose.ci.build.yml up
  3. docker-compose up

开始你的项目,我有遇到您的主项目中的Dockerfile出现问题的情况。这发生在FROM microsoft/aspnetcore:1.1,您可以将其更改为FROM microsoft/aspnetcore:1.1.2或您的项目需要的任何版本。