无法创建.net核心Web API的docker映像-COPY失败:stat /var/lib/docker/tmp/../netcoreapp2.1/publish

时间:2019-07-02 08:26:43

标签: docker .net-core

我正在尝试从docker文件构建.netcore v2.2 WebAPI应用程序的映像。但是,当我尝试使用以下命令构建映像时,出现“没有这样的文件或目录”错误:

docker build -t helloworld .

我的计算机上同时安装了Microsoft / dotnet“最新”和“ 2.2-aspnetcore-runtime”基础映像。

这是我的docker文件

FROM microsoft/dotnet

RUN mkdir /app
COPY ./bin/Release/netcoreapp2.2 /app
WORKDIR /app

ENTRYPOINT ["dotnet", "/app/HelloWorld.dll"]

# ASP.NET Core: Kestrel should listen on all IPs
ENV ASPNETCORE_URLS="http://0.0.0.0:5000"

这是我的解决方案的文件夹结构(我尝试了src中的命令):

Folder Structure

这是输出目录 output directory

这是来自docker的完整错误详细信息:

COPY failed: stat /var/lib/docker/tmp/docker-builder896068669/bin/Release/netcoreapp2.2: no such file or directory

2 个答案:

答案 0 :(得分:1)

运行./bin/Release/netcoreapp2.2/publish的计算机上似乎不存在文件docker build

运行docker build -t helloworld .时,它将把.中的所有文件(即运行命令的当前目录)复制到 build上下文,在运行COPY指令时使用,因此您需要确保从正确的目录运行命令,该目录中的文件将对COPY可用

您还可以通过指定要用作构建上下文的路径(例如docker build -t helloworld /path/to/my/dir

)从另一个目录运行同一命令。

答案 1 :(得分:1)

您可以将./bin/Release/netcoreapp2.2更改为./bin/release/netcoreapp2.2

文件夹名称区分大小写