asp net core 3.1 发布到 docker

我的环境:win10 + visual studio 2019 + Docker for Windows

1.安装Docker,参照https://www.runoob.com/docker/windows-docker-install.html。

2.使用vs新建一个asp net core web api项目,起名demoapi,可以不勾选启用docker支持。

asp net core 3.1 发布到 docker_第1张图片

3.项目点击右键,选择添加docker支持,系统会为我们自动生成dockerfile。

asp net core 3.1 发布到 docker_第2张图片

               

asp net core 3.1 发布到 docker_第3张图片

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["demoapi/demoapi.csproj", "demoapi/"]
RUN dotnet restore "demoapi/demoapi.csproj"
COPY . .
WORKDIR "/src/demoapi"
RUN dotnet build "demoapi.csproj" -c                                                                                                                                                                                                                                                                                                                                                  -o /app/build

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

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

这个文件使用了两个镜像,其中mcr.microsoft.com/dotnet/core/sdk:3.1-buster是用来还原程序,编译应用的。mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim则是真正的.net core 的运行时。如果是linux环境,可以直接将程序上传到linux,直接执行docker的build即可。因为本机已经安装了sdk,所以可以省去sdk镜像下载的时间,修改一下dockerfile,通过手动编译,然后用docker直接打包镜像。

#引入镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base

#设定工作目录
WORKDIR /app

#在容器中程序使用的端口,一定要和程序启动使用的端口对应上
EXPOSE 80

#复制文件到工作目录
COPY . .

#启动程序
ENTRYPOINT ["dotnet", "demoapi.dll"]

然后设置dockerfile复制到发布的目录。

asp net core 3.1 发布到 docker_第4张图片

4.设置发布

右键项目,选择发布

asp net core 3.1 发布到 docker_第5张图片

选择文件夹发布,然后点击创建配置文件。

asp net core 3.1 发布到 docker_第6张图片

点击发布按钮

asp net core 3.1 发布到 docker_第7张图片

发布成功

asp net core 3.1 发布到 docker_第8张图片

5.docker打包镜像

打开命令提示符,转到发布目录下。

asp net core 3.1 发布到 docker_第9张图片

执行以下命令

docker build -t demoapi:v1 .

期间会从dockerhub上拉取基础镜像,等待一下即可。

asp net core 3.1 发布到 docker_第10张图片

使用images命令查看生成的镜像,第一个就是刚才生成的

asp net core 3.1 发布到 docker_第11张图片

创建容器,设定端口映射,指定镜像。

docker run -p 9000:80 demoapi:v1

asp net core 3.1 发布到 docker_第12张图片

然后使用浏览器访问9000端口

asp net core 3.1 发布到 docker_第13张图片

成功访问

用docker ps查看一下容器

asp net core 3.1 发布到 docker_第14张图片

我的github 

你可能感兴趣的:(asp net core 3.1 发布到 docker)