-- 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
快速入门
无