编写.NET的Dockerfile文件构建镜像
創(chuàng)建一個WebApi項目,并且創(chuàng)建一個Dockerfile空文件,添加以下代碼,7.0代表的你項目使用的SDK的版本,構(gòu)建的時候也需要選擇好指定的鏡像tag
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "./WebApplication1/./WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
我們一步一步來進行講解,首先第一步,F(xiàn)ROM指定了一個mcr.microsoft.com/dotnet/aspnet:7.0鏡像,并且AS別名base
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
然后下一步,在這里FROM了一個mcr.microsoft.com/dotnet/sdk:7.0 的鏡像并且AS別名build,這個鏡像當中是使用到了.NET SDK將項目構(gòu)建成部署文件,在這里的COPY的目錄的位置是從你docker build ./ 的這個./的目錄作為根目錄的,請注意如果出現(xiàn)文件未找到的情況下可能就是工作目錄與Dockerfile目錄不一致導(dǎo)致,在構(gòu)建的時候指定了構(gòu)建完成到/app/build目錄中。
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "./WebApplication1/./WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/build
在這里FROM了上面的build然后繼續(xù)AS別名了publish在這里使用了dotnet publish將源碼進行了構(gòu)建部署,上面的build操作是為了將編譯過程和構(gòu)建鏡像的過程分離。
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
這里使用到了最開始的base然后別名final,然后指定工作目錄,使用COPY --from指定了上面的publish的構(gòu)建鏡像,然后將鏡像構(gòu)建的/app/publish中目錄下面的所有的文件COPY到/app下,然后給鏡像配置容器啟動時運行的命令,則是我們的.NET Core項目啟動命令,執(zhí)行我們的項目。
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
結(jié)尾
來著token的分享
技術(shù)群:737776595
總結(jié)
以上是生活随笔為你收集整理的编写.NET的Dockerfile文件构建镜像的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【scikit-learn基础】--『监
- 下一篇: 文心一言 VS 讯飞星火 VS chat