Python以docker形式部署,flask简易服务器。

公司大部分都是springboot 服务器,有时候用到python写的一些模型,部署在linux上进行处理

首先项目这样:

flask就不说了,快捷服务器,

python 复制代码
# -*- coding: utf-8 -*-

from flask import Flask, request

# 实例化Flask对象
app = Flask(__name__)


# 生成路由关系,并把关系保存到某个地方,app对象的 url_map字段中
@app.route('/')
def hello_world():
    return '部署测试Hello World!'


# 测试
@app.route("/water", methods=["GET"])
def test():
    id = request.args.get("id")
    value = request.args.get("value")
    time = request.args.get("time")

    if id and value and time:
        # 在这里进行接收到参数的处理,可以根据实际需求进行逻辑处理
        return {"code": 200, "msg": "参数接收成功", "id": id, "value": value, "time": time}
    else:
        return {"code": 500, "msg": "上传失败,参数缺失"}


if __name__ == '__main__':
    # 启动程序,监听用户请求
    # 一旦请求到来,执行 app.__call__方法
    # 封装用户请求
    # 进行路由匹配
    app.run(host='0.0.0.0', port=9084, debug=True)

然后是Dockerfile

python 复制代码
# Docker image for flask python run
# VERSION 1.0
# Author: Weiye
# 基础镜像使用python:3.7
FROM python:3.11.2
# 将服务器 requirements.txt 文件复制到 容器 /project/目录下
COPY requirements.txt /project/
# 指定容器工作目录为 /project/
WORKDIR /project/
# 安装 项目依赖
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 运行
ENTRYPOINT ["python","app.py"]

# 编译
# docker build -t weiye/flask-project:v1 .

# run
#docker run -it -p 7090:7090 --name flask-project \
#-v /mydata/flaskProject:/project \
#-d weiye/flask-project:v1

最后是引入文件 requirements.txt 这个文件咋来的呢?

python 复制代码
pip freeze > requirements.txt
python 复制代码
blinker==1.8.2
click==8.1.7
colorama==0.4.6
Flask==3.0.3
itsdangerous==2.2.0
Jinja2==3.1.4
MarkupSafe==2.1.5
Werkzeug==3.0.3
uvicorn==0.18.2

然后就开始进行部署了

复制到文件夹别忘记先赋值权限

进入到python文件夹的上级,home下

chmod -R 755 python/

我的文件夹结构是这样:

我将docker命令写成shell脚本方便以后部署

逐个解读

build.sh

python 复制代码
docker build -t weiye/flask-project:v1 .

clean.sh

python 复制代码
docker stop flask-project
docker rm flask-project

run.sh

python 复制代码
docker run -it -p 9084:9084 --name flask-project \
-v /home/python:/project \
-d weiye/flask-project:v1

不过最终我执行的是rebuild.sh

python 复制代码
./clean.sh;
./build.sh;
./run.sh;

先清理,然后构建,最后启动

相关推荐
镜子AI5 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo6 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
螺蛳粉 螺蛳粉7 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
知已难寻8 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
huainingning8 小时前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器
say_fall8 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
wacsii9 小时前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器
相思难忘成疾10 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
PellyKoo10 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
时早玖沐10 小时前
放弃 QQ 官方机器人:用 SnowLuma + AstrBot 自建 QQ 机器人
docker·开源·agent