网站多域名云南档案馆网站建设资金

张小明 2026/1/2 14:09:18
网站多域名,云南档案馆网站建设资金,网页设计与制作教程西北工业大学出版社,建网站外包目录前言docker部署python fastapi基本概念生成requestment文件Dockfile构建镜像启动容器容器启动失败时修复依赖缺失的解决方案#xff0c;重构正确镜像前言 这篇博客讲一下如何在centos服务器上用docker部署 python应用#xff0c;以及部署完成之后#xff0c;发现由于缺…目录前言docker部署python fastapi基本概念生成requestment文件Dockfile构建镜像启动容器容器启动失败时修复依赖缺失的解决方案重构正确镜像前言这篇博客讲一下如何在centos服务器上用docker部署 python应用以及部署完成之后发现由于缺第三方库导致容器启动失败无法进入容器手动安装第三方包的问题以及解决方案对docker不熟悉的朋友可以看下我的其他博客有讲关于docker相关的知识以及多种问题的解决方案docker部署python fastapi基本概念Python 镜像与 Java SpringBoot 镜像的构建逻辑存在核心差异Java 作为编译型语言可将项目编译后的字节码文件连同第三方依赖库的字节码文件一并打包为 JAR 包基于该 JAR 包即可直接构建出可运行的应用镜像而 Python 属于脚本型、解释型语言无需编译环节无法直接将第三方依赖库整合到项目文件中因此在构建 Python 镜像时需先将项目依赖的第三方库及其版本信息明确写入 requirements.txt 文件再在镜像构建过程中通过 pip 命令将这些依赖安装到镜像内。生成requestment文件requestment文件的内容是项目用到的第三方库以及版本信息便于构建python应用镜像时通过 pip 命令工具安装文件指定的第三方库到镜像内部一个标准的requestment文件内容如下fastapi0.124.4 langchain0.3.14 langchain-community0.3.14 langgraph0.2.65 pydantic2.12.5 python-dotenv1.2.1 uvicorn0.38.0 dashscope1.21.0一般在python项目根目录生成这个requestment文件主要的生成方式有两种通过AI编码插件智能体自动构建比如pycharm中可以安装通义灵码插件直接在通义灵码插件面板选择智能体让其生成项目的requestment文件。第二种方式是通过python 第三方包pipreqs工具生成这个工具需要提前通过pip install pipreqs命令提前安装最好安装在你的项目环境下安装完成后在控制台进入到你的项目根目录执行pipreqs . --encodingutf8 --force --ignore.venv,venv,__pycache__pipreqs工具会自动读取扫描当前目录及其子目录内的所有py文件主要是读取文件的import内容将第三方库以及版本信息创建写入到requestment.txt 文件中值得注意的是这两种方式无论哪一种我都试过生成的内容并不是很准确存在版本冲突的问题以及如果一个第三方库内部引用了另一个第三方库间接引用的第三方库无法被正确写入requestment 文件内。这个问题的解决方案 在博客最后一个章节总结了解决方案。Dockfile构建镜像将项目根目录上传到服务器在项目根目录中创建Dockerfile镜像构建文件编辑内容如下# 使用官方Python 3.12的轻量级版本作为基础镜像FROM python:3.12-slim# 设置容器内的工作目录WORKDIR /app# 将依赖列表文件复制到工作目录COPY requirements.txt .# 可选但推荐配置pip使用国内镜像源以加速本地构建RUN pip install--upgrade pip-i https://pypi.tuna.tsinghua.edu.cn/simple# 读取requirements.txt安装第三方库到镜像内部RUN pip install-r requirements.txt-i https://pypi.tuna.tsinghua.edu.cn/simple# 将项目所有源代码复制到容器中 [4,10]COPY . .# 暴露FastAPI应用运行的端口例如8000 [1,3]EXPOSE 8000# 设置容器启动命令 [1,4](ref)CMD[uvicorn,main:app,--host,0.0.0.0,--port,8000]在构建镜像过程中docker会自动下载python:3.12-slim基础镜像网速不好的朋友可以提前执行下面的命令提前将python3.12基础镜像下载到服务器中。docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/python:3.12-slim docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/python:3.12-slim python:3.12-slim最后在服务器项目根目录即Dockerfile目录内执行docker build -t 镜像名称 .就构建好了你的python应用镜像启动容器执行docker run ,配置端口、网络、容器名等配置 启动容器docker run -d -p8000:8000 --name my-fastapi-container my-fastapi-app我们 通过docker ps 命令 查看应用是否正常启动很有可能你的python应用由于缺包导致启动失败此时我们再通过docker logs -f 容器名 查看容器的启动日志大概率会看到缺包导致启动失败的错误信息容器启动失败时修复依赖缺失的解决方案重构正确镜像此时容器由于启动失败已经停止运行此时我们无法通过docker exec -it 容器名 bash的方式进入容器进而pip install 安装缺失的包这是一个棘手的问题。一个有效的解决方案是不要以直接运行镜像中的python应用的方式启动容器而是以启动命令行交互的方式启动容器容器启动失败的核心是CMD/ENTRYPOINT执行的命令报错退出我们可以覆盖启动命令让容器以交互式 shell 运行不执行原业务逻辑从而进入容器安装缺失包# 注意镜像还是之前的镜像只是以命令行方式启动容器docker run -it --name temp-api 原先的镜像名 /bin/bash启动后安装缺失的包并在容器内部的命令行中启动应用测试是否可以正常运行如果仍有缺失的包 继续安装直到应用启动成功为止。# 1. 先升级pip可选加速安装pipinstall--upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple# 2. 安装缺失的包示例假设缺requests、langchain-core# 替换为你实际缺失的包名pipinstall缺失包名1 缺失包名2 -i https://pypi.tuna.tsinghua.edu.cn/simple# 3. 直接在容器内运行FastAPI应用验证依赖是否修复uvicorn main:app --host0.0.0.0 --port8008安装包后运行正常把容器的修改保存为新镜像这个新的镜像就是你的python应用最终的完整镜像。# 先开新终端查看临时容器IDdockerps# 提交修改container_id替换为临时容器的IDnew-image:tag为新镜像名docker commit 运行正常的容器名或者id 新的镜像名:tag# 用新镜像启动业务容器docker run -d -p8000:8000 --name my-fastapi-container my-fastapi-app
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

信息门户网站建设报价在线报名网站建设

如何快速掌握OpenCLIP:多模态AI的完整实践指南 【免费下载链接】open_clip An open source implementation of CLIP. 项目地址: https://gitcode.com/GitHub_Trending/op/open_clip 想要在AI领域脱颖而出?OpenCLIP作为多模态对比学习的开源实现&a…

张小明 2025/12/31 16:50:46 网站建设

建网站需要什么技术济南的企业网站

MBA必看!8个降AIGC工具推荐,高效应对AI检测 AI降重工具:让论文更“自然”,让学术更“真实” 在当前的学术环境中,AI生成内容(AIGC)已经成为论文写作中不可忽视的一部分。许多MBA学生在撰写论文…

张小明 2026/1/2 12:17:22 网站建设

开发网页多少钱河南百度关键词优化排名软件

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景 关于电影信息聚合与评价问题的研究,现有研究主要以单一票房预测、情感分析或推荐算法优化为主,专门针…

张小明 2026/1/2 9:36:41 网站建设

禹城网站定制有哪些企业网站平台

目录具体实现截图项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理具体实现截图 本系统(程序源码数据库调试部署讲解)带文档1万字以上 同行可拿货,招校园代理 实验室设备管理系统vue Thinkphp和Laravel 项目开发技术介…

张小明 2025/12/31 16:50:46 网站建设

上海市网站设计公司郑州一建董事长

MeloTTS多语言语音合成系统容器化部署技术指南 【免费下载链接】MeloTTS 项目地址: https://gitcode.com/GitHub_Trending/me/MeloTTS 技术背景与需求分析 在当今全球化应用开发环境中,多语言语音合成技术已成为智能交互系统的核心组件。传统语音合成方案在…

张小明 2025/12/31 16:50:49 网站建设

呼市网站制作密云重庆网站建设

YOLO模型缓存击穿防御:互斥锁与双重检查机制 在现代工业视觉系统中,实时目标检测的稳定性往往决定了整个产线的运行效率。想象这样一个场景:一条自动化质检流水线上,数十台摄像头同时触发图像采集,瞬间涌入上百个推理请…

张小明 2025/12/31 16:50:50 网站建设