琢磨了n天,掉了好多头发,终于可以了,踩坑无数!终于行了!
先来了解下:
1.net运行时runtime和sdk,简单来说就是sdk开发用的,runtime是用来运行的,所以构建dockerfile只用runtime就够了!
2.docker运行不需要打包操作系统如ubuntu等进入包内!特殊需要的可以!这个问题都必须了解!
正式开始
1.用vs2022完成aspnet网站的建设和测试,我用的是blazorserve框架,一样的,先发布
2.创建Dockerfile文件,最好放在项目文件夹外面.
用vs2022项目右键添加docker支持,创建的dockfile如下
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base 这是dotnet运行时,必须的
WORKDIR /app 相当于cd /app 进入目录,位置是相对dockerfile的位置来说的
EXPOSE 80 容器暴露哪个端口FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build 引入sdk,完全没有必要,开发在本地就可以了,下面的都没用,去掉一个from就是一个层,from多文件就大
WORKDIR /src
COPY ["BlazorApp1.csproj", "."]
RUN dotnet restore "./BlazorApp1.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "BlazorApp1.csproj" -c Release -o /app/buildFROM build AS publish 从上一步as build层中发布网站到publish目录
RUN dotnet publish "BlazorApp1.csproj" -c Release -o /app/publish /p:UseAppHost=falseFROM base AS final 以运行时为基础打包
WORKDIR /app
COPY --from=publish /app/publish . 从publish环境中复制出来发布的文件到app目录
ENTRYPOINT ["dotnet", "BlazorApp1.dll"] 运行
太复杂了,很多用不到,一个from就是一个文件层,from多文件就庞大,
标签:app,BlazorApp1,publish,nas,build,dotnet,docker,aspnetcore
From: https://www.cnblogs.com/yaoyue68/p/17594000.html