ASP.NET Web 应用 Docker踩坑历程发表后,也开始使用Docker了,然而发布的过程比较痛苦,经常发生下图的事情:

据说是nuget包还原时发生错误 百度了半天也找不到解决的方法,而发生的概率有相当高,很是无语。
仔细看了自动生成的Dockerfile- FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
- WORKDIR /app
- EXPOSE 80
- EXPOSE 443
- FROM mcr.microsoft.com/dotnet/sdk:6.0 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 /p:UseAppHost=false
- FROM base AS final
- WORKDIR /app
- COPY --from=publish /app/publish .
- ENTRYPOINT ["dotnet", "WebApplication1.dll"]
复制代码 大致意思是把源代码复制到本地Docker,然后还原、编译、发布...,于是我在想能不能自己完成发布呢?于是把Dockerfile文件改成如下形式:- FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
- WORKDIR /app
- EXPOSE 80
- EXPOSE 443
- COPY Publish .
- ENTRYPOINT ["dotnet", "WebApplication1.dll"]
复制代码 然后在项目文件夹写了个批处理文件Publish.bat- echo off
- echo -----------------1.开始发布
- dotnet publish -o Publish --os linux
- echo -----------------2.生成镜像
- docker build -t catzhou2021/test -f Dockerfile .
- rd publish /Q/S
- echo -----------------------3.推送镜像
- docker push catzhou2021/test
- echo -----------------------4.完成
- timeout /t 50
- echo on
复制代码 嘿嘿,嘿嘿嘿,还真可以。不过存在以后不方便:
- 发布之前必须手动保存所有文件
- 必须到项目文件夹双击Publish.bat文件
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |