win10+wsl2+docker desktop实现asp.net core在 docker中运行

-- win10+wsl2+docker desktop实现asp.net core 应用打包镜像并在 docker容器中运行
【官网】:https://www.docker.com/

应用场景

win10基于docker desktop集成wsl2实现asp.net core webapi 3.1等 应用打包镜像并在 docker容器中运行.本文将介绍一个基本的通过dockerfile定义源码拷贝,build,run的整个过程.

基础资源

win10,docker desktop,已启用的wsl2

使用须知

配置步骤

A) win10上配置wsl2+docker desktop的docker开发环境.

    在win10上基于wsl2+docker desktop配置docker开发环境请前往:win10启用Wsl2,安装Docker desktop集成Ubuntu,配置docker开发环境

    

     [注]如果已具备该环境则自动忽略.

B)创建一个asp.net core webapi项目.

创建一个名为 WLab.WebApi的项目.

    

C)添加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/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["WLab.WebApi/WLab.WebApi.csproj", "WLab.WebApi/"]
RUN dotnet restore "WLab.WebApi/WLab.WebApi.csproj"
#拷贝所有文件
COPY . .
WORKDIR "/src/WLab.WebApi"
RUN dotnet build "WLab.WebApi.csproj" -c Release -o /app/build

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

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


D)docker build.

执行dockers build命令:


docker build -f WLab.WebApi/Dockerfile -t wlab-docker-api .       //注:运行的工作目录是解决方案目录下,dockerfile文件再项目目录下,后面的点也是必须的.



查看现有的镜像: docker images

E)docker run  以及测试.

执行 docker run命令:


docker run --name wlab-docker-api -it -p 5000:80 wlab-docker-api


注: 通过 ip addr可以查看到当前的ip为  172.24.27.1   ,其中5000为asp.net core3.1项目的默认端口.

常见问题

  • 找不到.net sdk
    【解决方案】mcr.microsoft.com/dotnet/core/aspnet:3.1 默认是debian的,ubuntu需要使用 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-bionic
  • invalid character 'c' looking for beginning of value
    【解决方案】命令1:systemctl daemon-reload . 命令2:sudo service docker restart
  • failed to solve with frontend dockerfile.v0: failed to create LLB definition:
    【解决方案】https://blog.csdn.net/qq_41240287/article/details/125236997

快速入门

参考资料