.NetCore Web Api 项目Docker部署

.NetCore WebApi 项目Docker 部署

.Net 5 之后版本编写的项目代码编译后均可以分别部署在 Windows、Linux系统下。只需要安装对应的SDK或者运行时。
这篇文章主要介绍.Net项目编译之后通过docker镜像部署WebApi项目

了解dotnet命令

dotnet 命令详细说明链接。不得不说微软的文档写的非常详细。
主要了解一下信息
dotnet命令表单

新建WebApi项目

  1. 新建一个 webapi 项目

    这里利用dotnet命令创建一个webapi项目

     mkdir DockerPublishDemo
     cd DockerPublishDemo
     dotnet new webapi
    

    命令执行

    该命令片段 创建一个名为DockerPublishDemo的空文件夹->进入文件夹->创建webapi
    在空文件中创建项目,默认项目名称与文件夹名称一致。

  2. 运行项目

     dotnet run 
    

    默认项目监听 http://localhost:5000, webapi项目没有前端页面。可以打开swagger测试页打开接口说明
    访问地址https://localhost:5001/swagger/index.html

  3. 编辑项目

    利用VS打开项目
    选中项目 右键->添加->Docker 支持
    docker 支持

    查看DockerFile

    #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
    
    # 引用dotnet 程序包
    FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443
    
    # 还原项目
    FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
    WORKDIR /src
    COPY ["DockerPublishDemo.csproj", "."]
    RUN dotnet restore "./DockerPublishDemo.csproj"
    
    # 构建项目
    COPY . .
    WORKDIR "/src/."
    RUN dotnet build "DockerPublishDemo.csproj" -c Release -o /app/build
    
    # 发布项目
    FROM build AS publish
    RUN dotnet publish "DockerPublishDemo.csproj" -c Release -o /app/publish
    
    # 运行
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "DockerPublishDemo.dll"]
    

    可以看到 DockerFile 中的命令基本上全是dotnet 命令。几个重要的块已经标记出来。基本不需要修改

  4. 编辑项目

    打开Startuo.cs文件 注释开发环境下 应用swagger

    swagger

    appsettings.json 中添加 固定绑定端口号

    "Kestrel": {
    "Endpoints": { "Http": { "Url": "http://*:5000" } }
    }
    

打包镜像

如果开发机器上 安装的有Docker 可以直接在文件夹下运行 docker build 构建docker 镜像

一般在开发测试环境 将代码上传到Git上、可以配置自动化部署,这篇文章暂不介绍。

在上篇文章中我本地已经安装了Linux系统 Docker 环境。这里我将直接拷贝代码 在服务上运行

在linux 进入到文件夹 运行

docker build -t webapi:1.0 .

此命令为 docker 构建当前文件下项目 镜像名称为webapi:1.0 默认寻找 DockerFile文件中的配置

查看构建后的镜像文件

docker images

构建完成后

运行daocker 镜像

docker run -d -p 5100:5000 --name webapidemo webapi:1.0

-d为后台运行 -p 映射端口 --name 容器名称 webapi:1.0为镜像的名称和版本号

docker容器

测试运行结果

查看Linux 链接IP
在另外一台服务器上通过 ip:端口号 访问即可

清理资源

删除镜像前必须先删除容器

#查看镜像
docker images 
#查看全部容器 去除-a 查看正在运行的容器
docker ps -a  
#暂停容器
docker stop <CONTAINER ID>or<name> 
# 删除容器
docker rm <CONTAINER ID>or<name> 
#删除镜像 
docker rmi <IMAGE ID>or<REPOSITORY> 
posted @ 2024-03-14 21:47  就着  阅读(125)  评论(0编辑  收藏  举报