关于使用python 安装 flask-openapi3扩展,使用docker 环境的完整复盘

在某个时刻 需要运行python 3 flask-openapi3扩展

当前因为服务器为国产化服务器,操作系统版本为麒麟,python 版本为3.7 因为要安装flask-openapi3 包 又因为flask 版本小于2.0

python 复制代码
from flask_openapi3 import OpenAPI,Info,Tag

目前安装的是 flask-openapi3 1.1.5 没毛病 但是

python 复制代码
from flask_openapi3 import OpenAPI,Info,Tag,MediaType

于是乎想到 无法更新宿主机的python 环境 那就docker 吧

当前服务器环境 为 阿里云 服务器 系统版本 CentOS Linux release 7.9.2009 (Core)

1.首先先备份当前yum 仓库

bash 复制代码
cd /etc/yum.repos.d/
sudo cp ./* /etc/yum.repos.d/backup/

确保/etc/yum.repos.d/backup/目录已经存在,如果不存在,请先创建它:

bash 复制代码
sudo mkdir /etc/yum.repos.d/backup/

2.下载阿里云Yum仓库配置文件

bash 复制代码
cd /etc/yum.repos.d/
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3.安装对应的docker

bash 复制代码
yum install docker
  1. 如果想升级docker

看了一下 就算升级yum 仓库源 截止目前最新不超过20版本 于是乎网上找资料,我们可以下载离线包。网址如下:

https://download.docker.com/linux/static/stable/

这里我们选择x86平台

目前我安装的版本是docker version 20.10.24 直接选择我们想要更新的版本吧,点击下载后,上传服务器。

这里我们选择26.1.4 这个版本 地址:https://download.docker.com/linux/static/stable/x86_64/docker-26.1.4.tgz

上传至服务器/opt目录下,执行命令解压文件

bash 复制代码
tar -zxvf docker-26.1.4.tgz

2. 移动目录

解压出来的 Docker 二进制文件复制到系统的可执行路径(通常是 /usr/bin/)中,以便能够全局访问 Docker 命令

bash 复制代码
cd /opt
cp docker/* /usr/bin/

因为我当前已经安装了docker 20 故此 直接覆盖去球

3. 创建docker服务配置文件docker.service

bash 复制代码
vim /etc/systemd/system/docker.service

内容如下:

bash 复制代码
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
  
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
TimeoutStartSec=0
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process
StartLimitBurst=3
StartLimitInterval=60s
  
[Install]
WantedBy=multi-user.target

赋予docker服务配置文件docker.service执行权限

bash 复制代码
chmod +x /etc/systemd/system/docker.service

4. 启动docker服务

bash 复制代码
# 重新加载systemctl配置
systemctl daemon-reload
# 启用docker服务开机自启动
systemctl enable docker.service 
# 启动docker服务
systemctl start docker 

5. 验证docker

bash 复制代码
# 检查docker服务状态
systemctl status docker

接下来 我们配置docker 加速

DOCK 阿里云镜像加速 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

镜像加速安装好后 可以使用命令查看一下 :

bash 复制代码
docker info

创建构建文件

在/opt 目录下创建一个目录 目录名任意 我这里是要镜像打包python3 所以我创建python3 目录,命令如下:

bash 复制代码
cd /opt
mkdir python3 && cd python3
touch Dockerfile
vim Dockerfile

Dockerfile 文件内容如下:

bash 复制代码
# 基于 Python 官方镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 复制本地代码到容器中
COPY . /app/

# 安装 Python 依赖
RUN pip3 install --no-cache-dir -r requirements.txt  -i https://mirrors.aliyun.com/pypi/simple/
RUN pip3 install -U flask-openapi3[swagger,redoc,rapidoc,rapipdf,scalar,elements] -i https://mirrors.aliyun.com/pypi/simple/

使用deepkseek 优化了一下Dockerfile内容如下:

bash 复制代码
FROM python:3.8-slim

# 设置容器时区(避免日志时间不一致)
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 设置工作目录
WORKDIR /app

# 复制本地代码到容器中
COPY . /app/

# 安装 Python 依赖
RUN pip3 install --no-cache-dir -r requirements.txt  -i https://mirrors.aliyun.com/pypi/simple/
RUN pip3 install -U flask-openapi3[swagger,redoc,rapidoc,rapipdf,scalar,elements] -i https://mirrors.aliyun.com/pypi/simple/

加了一个时间

RUN pip3 这里 划重点了 这里的-r 为你后续需要安装的扩展,后面再说,-i 一开始我已经docker 镜像加速应该可以了 但这里需要注意 pip3 也一样设置加速 要不然编译卡炸你。

创建扩展文件requirements.txt

bash 复制代码
cd /opt
mkdir python3 && cd python3
touch requirements.txt
vim requirements.txt

requirements.txt 内容如下:

bash 复制代码
flask
flask-openapi3
pydantic
typing
werkzeug==1.0.1
pyyaml
requests
clickhouse_driver

构建docker镜像

bash 复制代码
docker build -t python3:amd64_python3_20250309 .

因为我这里服务器架构x86 这样运行打出来的镜像默认就是x86

-t 参数后面是跟镜像名称 这个自行定义 : 英文冒号后面是tag 也就是标签 根据实际情况填写。

下面的构建命令与上面等效

bash 复制代码
docker buildx build --platform linux/amd64 -t python3:amd64_python3_202503 .

如果需要编译ARM 架构的 命令如下(此处我还未验证通过 ):

bash 复制代码
docker run -it python3:amd64_python3_20250309 bash

写在最后 本文只简单见解docker 以及项目实战中的复盘,更多知识点 可以参考 https://blog.csdn.net/weixin_44339533/article/details/145675258 这个 也可以查阅其他资料。谢谢。

相关推荐
xsc6996758 分钟前
从零搭建大模型与智能体平台 - 完整技术详解
python
秋91 小时前
Go语言(Golang)开发工程师全景解析:岗位职责·语言优势与使用场景·各城市薪资·发展前景·高考志愿填报(2026版)
开发语言·golang·高考
无风听海1 小时前
多租户系统中的 OIDC:Discovery 端点与联合登录的深度实践
后端·python·flask
CTA终结者2 小时前
期货量化主力换月程序怎么移仓:天勤 underlying_symbol 与任务切换
python·区块链
huangdong_2 小时前
1688商品图片采集技术解析:登录态处理与SKU图自动分类
开发语言
马士兵教育2 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
chase_my_dream2 小时前
C++ + SLAM 高频面试问题整理
开发语言·c++·面试
KaMeidebaby2 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
Cloud_Shy6182 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 30 - 32)
开发语言·人工智能·笔记·python·学习方法
天佑木枫3 小时前
15天Python入门系列 · 序
开发语言·python