Dot-Net

在 ASP.NET Core 中建構 docker:“沒有這樣的文件或目錄”錯誤

  • April 13, 2017

建構 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 .

引用自:https://stackoverflow.com/questions/43387693