簡體   English   中英

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

[英]Build docker in ASP.NET Core: "no such file or directory" error

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

在 Visual Studio 2017 中使用“添加 Docker 支持”選項時,VS 會生成一堆 docker-compose 文件和 Dockerfile。 正如 Marcin Zablocki 提到的,其中之一是docker-compose.ci.build.yml

為了與 Docker 理念保持一致,您可以使用 docker 容器來發布您的項目。 要發布您的項目,您將執行以下步驟:

  1. git clone/pull your project & 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或您的項目所需的任何版本。

如果你已經發布了你的項目並且因為目錄錯誤而面臨這個問題,只需將 docker 文件向上移動一個文件夾並將其放在 *.sln 文件旁邊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM