【发布时间】:2020-07-11 21:22:33
【问题描述】:
最近,我在 Visual Studio 2019 上创建了一个启用 Docker 支持的 ASP.Net Core 项目。然后它为我创建了一个完整的 Dockerfile,所以我不必担心这个。
如果我从 Visual Studio 启动我的应用程序,使用 Docker 启动设置,它会完美构建然后运行,非常完美!
但是当我尝试使用 docker build 命令手动构建它时,我收到一条错误消息:
COPY failed: stat /var/lib/docker/tmp/docker-builder563776422/Back/Back.csproj: no such file or directory
Back 是我的解决方案的名称,也是我在此解决方案中唯一项目的名称。
如果我然后更改以下行:
COPY ["Back/Back.csproj", "Back/"]
到
COPY ["Back.csproj", "Back/"]
它现在使用命令构建。这种修改对我来说似乎是合乎逻辑的,因为 Dockerfile 已经位于我的项目文件夹中,而不是位于解决方案的根目录中。
我有点迷茫,为什么在修改之前它可以在 Visual Studio 上运行?我可以更改这条线吗?
这是完整的 Dockerfile(修改前):
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY ["Back/Back.csproj", "Back/"]
RUN dotnet restore "Back/Back.csproj"
COPY . .
WORKDIR "/src/Back"
RUN dotnet build "Back.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Back.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Back.dll"]
【问题讨论】:
标签: asp.net visual-studio docker .net-core