首页 > 其他分享 >.NetCore Web Api 项目Docker部署

.NetCore Web Api 项目Docker部署

时间:2024-03-14 21:56:33浏览次数:26  
标签:webapi Web DockerPublishDemo NetCore 项目 Api dotnet 镜像 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> 

标签:webapi,Web,DockerPublishDemo,NetCore,项目,Api,dotnet,镜像,docker
From: https://www.cnblogs.com/IsThis/p/18074096

相关文章

  • 边缘计算+WEB端应用融合:AI行为识别智能监控系统搭建指南 -- 整体介绍(一)
    边缘计算+WEB端应用融合:AI行为识别智能监控系统搭建指南前言硬件设备及技术选型硬件设备选型系统技术选型流媒体服务器选型项目整体结构智能监控系统功能视频纵览预警信息模型管理设备管理摄像头管理前言欢迎来到我们的专栏《边缘计算+WEB端应用融合:AI行为识别智能......
  • webpack面试1
    一、谈谈对webpack的认识webpack是一个模块打包工具,它能够很好地管理与打包Web开发中所用到的HTML、JS、CSS以及各种静态文件(图片、字体等),让开发过程更加高效。对于不同类型的资源,webpack有对应的模块加载器(loader)来处理。webpack会分析模块间的依赖关系,最后输出优化且合并后的......
  • 小程序API能力集成指南——场景API汇总
    条件APIty.device.createCondition创建条件需引入DeviceKit,且在>=2.5.4版本才可使用参数Objectobject属性类型默认值必填说明typestring是条件类型conditionstring否条件内容indexnumber否索引completefunction否接口调用结束的回调函数(调用成功、失败都会执行)success......
  • Android各版本代号和对应API等级
    系统版本 代号 API等级Android13.0 T 33Android12.0 S 31,32Android11.0 R 30Android10.0 Q 29Android9.0 Pie 28Android8.1 Oreo 27Android8.0 Oreo 26Android7.1.1 Nougat 25Android7.0 Nougat ......
  • Web Audio API 第1章 基础篇
    WebAudioAPI第1章基础篇我查了一下WebAudioAPI蝙蝠书居然在2013年就出版了我又看了一下我的“豆瓣读书”频道内,这本书加入到“在读”标签是在2021年了一直没有坚持看这本书的原因有两点,一是本书是英文版的,不像中文看的那么流畅二是在前端开发业务中一直没有遇......
  • 淘口令解析源头api接口
    淘口令网提供淘口令解析功能,淘口令解密工具可一键将淘口令文本解析还原成URL链接,可把淘口令转换成网址链接,方便查看口令图片,口令标题,口令有效期等,不限制1.口令解析工具可一键将加密的淘口令代码解析还原成正常链接。2.主要给用户提供电脑端查看口令内容,和打开口令里面......
  • 修改zabbix的web平台名称
    1、在公司使用zabbix时,想着把zabbix的web页面名称修改成自己喜好的,但是这个是无法直接在前端页面修改,需要修改zabbix.conf.php配置文件 2、通过find命令查找zabbix.conf.php文件,结果显示有两个文件路径,其实两个配置文件都一样,只是一个是软链接文件 3、修改zabbix.c......
  • RAG实战6-如何在LlamaIndex中使用自己搭建的API
    RAG实战6-如何在LlamaIndex使用自己搭建的大模型API在搭建一个大模型API服务中,我们介绍了如何使用SWIFT框架搭建一个大模型API服务。在RAG实战1-5中,我们一直使用的是本地加载大模型的方式来调用大模型,本文将介绍如何在LlamaIndex中使用自己搭建的大模型API。LlamaIndex支持部分......
  • 【你也能从零基础学会网站开发】Web建站之javascript入门篇 Array数组
    ......
  • 【你也能从零基础学会网站开发】Web建站之javascript入门篇 History对象与Location对
    ......