CentOS7使用Docker部署.net Webapi
1 准备WebApi项目
对于已存在的WebApi项目,需要添加Docker支持;
编码时,先设置好项目需要的端口号:program.cs中,app.Run("http://*:8000");设置端口为:8000
在VS中,选中项目:右键——添加——Docker支持,会自动添加Dockerfile文件
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.#net 6 运行时支持
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
#Api部署路径
WORKDIR /app
#开放的端口
#EXPOSE 8000
#
#FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
#ARG BUILD_CONFIGURATION=Release
#WORKDIR /src
#COPY ["TestWebApi.csproj", "."]
#RUN dotnet restore "./././TestWebApi.csproj"
#COPY . .
#WORKDIR "/src/."
#RUN dotnet build "./TestWebApi.csproj" -c $BUILD_CONFIGURATION -o /app/build
#
#FROM build AS publish
#ARG BUILD_CONFIGURATION=Release
#RUN dotnet publish "./TestWebApi.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
#
#FROM base AS final
#WORKDIR /app
#COPY --from=publish /app/publish .
#注意:COPY和.符号以及.符号之间均有空格
COPY . .
ENTRYPOINT ["dotnet", "TestWebApi.dll"]
2 正常进行项目发布
注意:若发布的项目中不包含Dockerfile文件,需要将文件拷贝进去

3 准备服务器环境,安装Docker
//准备环境,安装Docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
//下载安装Docker核心
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
//设置Docker开机自启
systemctl enable docker
4 将已发布的项目文件上传到服务器,使用WinSCP工具
WinSCP下载路径:https://winscp.net/download/WinSCP-6.3.2-Setup.exe/download
5 进入上传的WebApi部署文件夹下,构建镜像
docker build -t my-webapi . //.表示当前根目录,镜像名:my-webapi
6 构建容器并运行
docker run --name 容器名 -d -p 8000:8000 镜像名 //暴露端口号:8000
//查看运行日志信息
docker logs --tail=8000 dotnetapitest
7 为保证服务正常运行,添加守护进程
//安装epel,据说这里面的软件包更丰富
yum install epel-release
//安装守护进程
yum install -y supervisor
systemctl enable supervisord # 开机自启动
systemctl start supervisord # 启动supervisord服务
8 打开守护进程的配置文件
cat /etc/supervisord.conf

红框部分表明在etc这个文件夹下的*.ini文件为守护进程的配置文件,可以自行配置
9 编写守护进程配置
//新建配置命令
sudo vi mywebapi.ini//配置内容
[program:mywebapi] #进程名称
command=dotnet TestWebApi.dll #站点启动指令
directory=/temp/你的网站项目地址 #命令执行目录
environment=ASPNETCORE_ENVIRONMENT=production #进程环境变量
user=root #启动进程的账户
stopsignal=INT
autostart=true #supervisord启动时,该进程是否自启动
autorestart=true
startsecs=2 #自动重启时间间隔,秒
srdeer_logfile=/temp/xxx.err.log #错误日志,相关路径必须存在
stdout_logfile=/temp/xxx.out.log #输出日志
supervisor控制台指令:
//更新新的配置到supervisord,配置修改后需要执行
supervisorctl update
//查看所有应用
supervisorctl status
//重新启动配置中的所有程序
supervisorctl reload
//启动某个进程(program_name=你配置中写的程序名称)
supervisorctl start program_name
//重启某一进程 (program_name=你配置中写的程序名称)
supervisorctl restart program_name
//停止全部进程
supervisorctl stop all
10 守护进程启动应用需要安装.net
//将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
//安装sdk
sudo yum install dotnet-sdk-6.0 //注意自己开发使用的版本
//安装运行时,一般情况下安装sdk之后,无需执行当前命令
sudo yum install aspnetcore-runtime-6.0
//重启服务器,测试服务是否正常运行
reboot
11 若部署出现异常,可执行如下命令之后重新部署
//关闭容器
docker stop 容器名
//删除容器
docker rm 容器名
//删除镜像
docker rmi 镜像名
相关文章:
CentOS7使用Docker部署.net Webapi
1 准备WebApi项目 对于已存在的WebApi项目,需要添加Docker支持; 编码时,先设置好项目需要的端口号:program.cs中,app.Run("http://*:8000");设置端口为:8000在VS中,选中项目…...
Windows程序员用MAC:初始设置(用起来像win一些)
初级代码游戏的专栏介绍与文章目录-CSDN博客 初用Mac会有很多不习惯,特别是鼠标滚轮的滚动方向和windows是反的,还好是通过设置改变的。下面是我自己的设置。 目录 一、显示器设置 二、屏保、时钟、触发角 三、程序坞与菜单栏 四、安全性与隐私 五…...
基于深度学习YOLOv8+Pyqt5的工地安全帽头盔佩戴检测识别系统(源码+跑通说明文件)
wx供重浩:创享日记 对话框发送:318安全帽 获取完整源码源文件7000张已标注的数据集训练好的模型配置说明文件 可有偿59yuan一对一远程操作配置环境跑通程序 效果展示(图片检测批量检测视频检测摄像头检测) 基于深度学习YOLOv8Pyqt…...
csv编辑器是干什么的?
csv编辑器是一种用于编写、编辑和管理文本文件的工具。适用于 JetBrains IDE 系列的 CSV 编辑器插件,此插件将 CSV(逗号分隔值)作为一种语言引入 Jetbrains IDE,其中包含语法定义、结构化语言元素和关联的文件类型 (.c…...
计算机网络——物理层(奈氏准则和香农定理)
计算机网络——物理层(奈氏准则和香农定理) 失真码间串扰奈氏准则(奈奎斯特定理)极限数据率 噪声信噪比香农定理奈氏准则和香农定理的区别 前面我们已经了解一些数据通信的基本知识,没有看过上一篇得小伙伴可以点击这里…...
XML语言的学习记录3-解析
学习笔记: 一、 解析XML文档: 1.使用 XMLHttpRequest 对象,将xml文档放入XML DOM对象中: xmlhttpnew XMLHttpRequest(); xmlhttp.open("GET","books.xml",false); xmlhttp.send(); xmlDocxmlhttp.response…...
【Linux】cat vim 命令存在着什么区别?
Linux 中的 cat 命令和 vim 命令之间存在一些显著的区别! cat 命令 首先,cat命令主要用于连接并显示文件的内容。它的原含义是“连接(concatenate)”,可以将多个文件的内容连接起来,并输出到标准输出流中&…...
MeterSphere和Jmeter使用总结
一、MeterSphere 介绍 MeterSphere 是⼀站式开源持续测试平台,涵盖测试跟踪、接⼝测试、UI 测试和性能测试等,全 ⾯兼容 JMeter、Selenium 等主流开源标准,能够有效助⼒开发和测试团队在线共享协作,实现端到 端的测试管理跟踪…...
学习笔记Day8:GEO数据挖掘-基因表达芯片
GEO数据挖掘 数据库:GEO、NHANCE、TCGA、ICGC、CCLE、SEER等 数据类型:基因表达芯片、转录组、单细胞、突变、甲基化、拷贝数变异等等 常见图表 表达矩阵 一行为一个基因,一列为一个样本,内容是基因表达量。 热图 输入数据…...
如何将大华dav视频转mp4?一键无损清晰转换~
Digital Audio Video(DAV)文件格式源于数字监控领域,旨在解决视频监控数据的存储和回放问题。随着数字监控技术的发展,DAV格式逐渐成为监控设备记录视频的标准格式,广泛应用于安防系统、摄像头监控等场景。 MP4文件格式…...
数字化转型导师坚鹏:人工智能在金融机构数字化转型中的应用
人工智能在金融机构数字化转型中的应用 课程背景: 金融机构数字化转型离不开人工智能,在金融机构数字化转型中,人工智能起到至关重要的作用,很多机构存在以下问题: 不清楚人工智能产业对我们有什么影响?…...
部署Zabbix Agents添加使能监测服务器_Windows平台_MSI/Archive模式
Windows平台 一、从MSI安装Windows代理,添加Windows Servers/PC 概述 可以从Windows MSI安装包(32位或64位) 安装Zabbix agent 32位包不能安装在64位Windows中 所有软件包都支持TLS,配置TLS可选 支持UI和命令行的安装。 1、下载Agent代理程序,使用Agent2升级版,官网链接如…...
十一 超级数据查看器 讲解稿 详情6 导出功能
十一 超级数据查看器 讲解稿 详情6 导出功能 点击此处 以新页面 打开B站 播放当前教学视频 app下载地址 百度手机助手 下载地址4 讲解稿全文: 导出功能讲解 这节课我们讲解一下导出功能, 导出功能,可以将当前查到的信息导出成E…...
java遍历文件目录去除中文文件名
文章目录 一、原始需求二、maven依赖三、核心代码四、运行结果 一、原始需求 需要遍历文件目录及其子目录,找出包含中文字符的文件名,将中文字符去除。 二、maven依赖 pom.xml <dependency><groupId>org.apache.commons</groupId>&…...
LeetCode Python - 61. 旋转链表
目录 题目描述解法运行结果 题目描述 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head [1,2,3,4,5], k 2 输出:[4,5,1,2,3] 示例 2: 输入:head…...
k8s client-java创建pod常见问题
1.配置Kubernetes连接: 使用Kubernetes的配置文件(通常位于~/.kube/config)或直接使用API服务器地址、认证信息等来配置客户端。 配置通常有两种模式,安全和不安全的配置模式,对认证要求严格就选用安全模式ÿ…...
C++——字符串、读写文件、结构体、枚举
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
vscode 运行 java 项目之解决“Build failed, do you want to continue”的问题
Visual Studio Code运行 java 起来似乎比 IDEA 更轻量、比 eclipse 更友好,是不可多得的现代编译法宝。 安装好官方推荐的 java 扩展包后,就可以运行 java 代码了。功能 比 code runner 强,支持 gradle、maven、普通java项目,运行…...
yocto编译测试
源码下载 git clone -b gatesgarth git://git.yoctoproject.org/poky lkmaolkmao-virtual-machine:~/yocto$ git clone -b gatesgarth git://git.yoctoproject.org/poky Cloning into poky... remote: Enumerating objects: 640690, done. remote: Counting objects: 100% (13…...
rsync+inotify-tools文件传输
目录 rsync rsync概述 rsync优缺点 rsync参数 rsync命令 rsync同步源 linux 安装rsync 安装rsync服务端 安装rsync客户端 windows 安装rsync rsync实践 inotify-tools inotify-tools概述 innotify-tools 命令、参数、事件 rsync客户端安装inotify-tools innotif…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
python打卡第47天
昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图,展示模…...
