VS2019啟用Docker支持的坑


  • 使用vs2019創建ASP.Net Core Web應用程序:
  • 右側高級選項中有一項啟用Docker支持,勾選后vs會自動幫我們創建Dockerfile:
  • 看一下Dockerfile的內容:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

乍一看好像很完美。。。

  • 下面用docker build一下,通常的做法是:
    docker build -t mywebapp .

    然后進行到第6步就報錯了:COPY failed: stat /var/lib/docker/tmp/docker-builder893785636/WebApplication1/WebApplication1.csproj: no such file or directory
    沒有這樣的文件或目錄,仔細一看COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]確實不對,WebApplication1這級目錄是多余的。

    然后我試着修改Dockerfile文件,最后怎么改都沒能成功。。。

解決方案一:

  • 把生成的Dockerfile文件移到上一級目錄,在上一級目錄執行docker build -t mywebapp .就可以了。


解決方案二:

  • 在上一級目錄執行docker build並使用-f參數指定Dockerfile文件位置:docker build -t mywebapp1 -f ./WebApplication1/Dockerfile .

解決方案三:

  • 直接使用vs2019來啟動,將項目設置為Docker啟動:

    Ctrl+F5即可啟動:

    但是由於網絡等原因,可能又會遇到其他問題。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM