基于阿里云系列平台的python微服务设计与DevOps实践

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • [1. 项目构建](#1. 项目构建)
  • [2. 新建代码仓库](#2. 新建代码仓库)
  • [3. 建立流水线](#3. 建立流水线)
    • [3.1 流水线源](#3.1 流水线源)
    • [3.2 镜像构建](#3.2 镜像构建)
    • [3.3 服务部署](#3.3 服务部署)
  • 总结

前言

1. 项目构建

java 复制代码
#基于Python最新基础镜像
FROM crpi-ru2a6rcf4x9ry77a.cn-hangzhou.personal.cr.aliyuncs.com/ck_acr_test/ck_acr_test_images_house:my_python_-slim-bookworm
LABEL maintainer="<ck@uestc.edu.cn>"
# 工作目录
WORKDIR /app
# 安装Python库
COPY requirements.txt requirements.txt
RUN  pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

#复制当前文件夹中全部文件到镜像中
COPY  .  .

#容器启动时执行命令
CMD ["python3","server.py"]
java 复制代码
sanic
requests
java 复制代码
#引入Sanic库中必要的子模块
from sanic import Sanic,response
#创建Sanic应用
app = Sanic("Sample_HTTP_Api")
#将异常反馈以JSON的形式输出
app.config.FALLBACK_ERROR_FORMAT="json"
#默认情况下,Sanic会忽略GET请求的消息体,将ignore_body参数设置为False可以让Sanic接收Get请求的消息体
@app.get("/v1/devices",ignore_body=False)
async def get_devices(request):
#request参数包含路由到该处理函数的请求的所有信息,包括uRL、header、body
#Sanic提供了多种便捷的HTTP响应的封装格式,这里使用JSON作为响应
    return response.json(
        {
            "status":0,
            "message":"get_devices接口尚未完成"
        }
    )
#定义添加设备的接口
@app.post("/v1/devices")
async def add_devices(request):
    return response.json(
        {
            "status":0,
            "message":"add_devices接口尚未完成"
        }
    )

#定义添加修改的接口
@app.put("/v1/devices")
async def update_devices(request):
    return response.json(
        {
            "status":0,
            "message":"update_devices接口尚未完成"
        }
    )

#定义删除设备的接口
@app.delete("/v1/devices")
async def delete_devices(request):
    return response.json(
        {
        "status":0,
        "message":"delete_devices接口尚未完成"
        }
    )

if __name__ == "__main__":
    #启动Sanic应用,为了避免多进程的额外问题,这里使用单进程模式
    app.run(host="0.0.0.0",port=8000,single_process=True)
java 复制代码
curl 127.0.0.1:8000/v1/device

2. 新建代码仓库

在ECS上

java 复制代码
git clone git@codeup.aliyun.com:6835bbe8c3d70bfc7878f751/exp_pyms_basic.git

然后把代码文件传到上面去

3. 建立流水线

我们复制以前的流水线 2025-09-21_docker_2,然后进行修改

3.1 流水线源

只需要更改代码仓库就可以了

3.2 镜像构建

不用修改

3.3 服务部署

只需要更改部署脚本

java 复制代码
docker login --username=xxxxx xxxxx.com -pxxxxx
docker rm -f exp_pyms_basic
#确保历史容器实例
docker pull ${CONTAINER_TAG}
docker run -d --restart=always --name exp_pyms_basic -p 8000:8000 ${CONTAINER_TAG}

然后就可以运行了

然后开始运行流水线


总结

相关推荐
计算机毕业编程指导师3 分钟前
【Python毕设选题推荐】基于Spark的国内主要农作物产量趋势分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·python·数据分析·spark·毕业设计·课程设计·农作物产量
计算机毕业编程指导师9 分钟前
【Python毕设选题推荐】基于Spark的宫颈癌变光谱特征数据分析可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·宫颈癌变
ss2739 分钟前
AI全栈实战 | 3.3-01 Python OOP:__init__ 真的是构造函数吗,元类怎么让 Django Model 变魔法
开发语言·python·django
FYKJ_201012 分钟前
springboot心理健康管理系统86254-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
海绵宝宝转agent9 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
小奇不哭9 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
小小龙学IT9 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
2601_9620715710 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
卷无止境11 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
Java后端的Ai之路11 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数