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

张小明 2026/1/9 7:24:33
网站多域名,云南档案馆网站建设资金,网页设计与制作教程西北工业大学出版社,建网站外包目录前言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进行投诉反馈,一经查实,立即删除!

如何设立邮箱和网站长沙工程建设管理中心网站

Langchain-Chatchat 应急响应手册快速定位系统技术解析 在企业 IT 运维和工业生产环境中,面对突发故障或安全事件时,能否快速获取准确的处置指引,往往直接决定了损失的大小。传统方式下,运维人员需要翻阅厚重的操作手册、PDF 文档…

张小明 2026/1/1 8:39:53 网站建设

男女在床上做孔网站鄂州第一网官方网站

SoundCloud音乐获取终极指南:5步轻松获得高品质音频 【免费下载链接】scdl Soundcloud Music Downloader 项目地址: https://gitcode.com/gh_mirrors/sc/scdl 想要获取SoundCloud平台上的音乐资源吗?这款开源的SoundCloud音乐获取工具正是您需要的…

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

株洲建设网站的公司滨州哪里有做网站的

字节跳动AHN技术:仿生记忆革命让AI处理百万字文本成本降74% 【免费下载链接】AHN-Mamba2-for-Qwen-2.5-Instruct-14B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/AHN-Mamba2-for-Qwen-2.5-Instruct-14B 导语 当AI需要阅读一本500页的法律…

张小明 2025/12/30 16:30:39 网站建设

外贸网站论文建筑培训网官网证件查询

APK Editor Studio:高效安卓应用包编辑解决方案 【免费下载链接】apk-editor-studio Powerful yet easy to use APK editor for PC and Mac. 项目地址: https://gitcode.com/gh_mirrors/ap/apk-editor-studio 你是否曾经想要自定义手机应用的界面、修改应用权…

张小明 2026/1/6 23:09:59 网站建设

网站在哪里设置域名微信点赞网站怎么做

LumenPnP开源贴片机:构建你的桌面级电子制造工厂 【免费下载链接】lumenpnp The LumenPnP is an open source pick and place machine. 项目地址: https://gitcode.com/gh_mirrors/lu/lumenpnp LumenPnP是一款革命性的开源贴片机,专为电子爱好者、…

张小明 2025/12/30 16:29:32 网站建设

网站降权如何恢复免费微分销系统

decimal.js 高精度数值计算终极指南:彻底告别JavaScript精度噩梦 【免费下载链接】decimal.js An arbitrary-precision Decimal type for JavaScript 项目地址: https://gitcode.com/gh_mirrors/de/decimal.js 引言:为什么需要高精度计算 在Java…

张小明 2026/1/8 8:15:25 网站建设