[英]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 容器來發布您的項目。 要發布您的項目,您將執行以下步驟:
git clone/pull
your project & cd 到根目錄docker-compose -f docker-compose.ci.build.yml up
發布您的項目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.