python项目通过docker部署到Linux系统并实现远程访问

背景需求:在Windows系统编写了简单的python代码,希望能通过docker打包到Linux Ubuntu系统中,并运行起来,并且希望在本地Windows系统中能通过postman访问。

目录

一、原本的python代码

二、创建一个简单的Flask应用程序

三、创建requirements.txt文件

四、编写 Dockerfile

五、编译并导出镜像文件

5.1 指定架构编译

5.2 导出镜像文件 

六、服务器运行 

6.1 导入镜像

6.2 映射容器端口到宿主机端口

七、Windows系统通过postman远程访问 


一、原本的python代码

在本地pycharm中编写一条简单的python代码,假如说只是一条打印语句,现在我们希望在Linux服务器上运行,并且可以由其他用户远程访问,决定打印的内容。

# 打印一条简单的消息
print("Hello, World!")

文件名就叫作testweb.py,放在python项目中的uni目录里

二、创建一个简单的Flask应用程序

改写testweb.py文件,想让其他人能够通过 Web 请求调用 Python 程序,需要将程序改造成一个 Web 服务,并明确指定监听的端口。可以使用 Flask 或其他 Web 框架来实现这一点。这里使用Flask框架。

from flask import Flask, request, jsonifyapp = Flask(__name__)@app.route('/hello', methods=['POST'])
def hello():data = request.get_json()message = data.get('message', 'No message provided')print(f"Received message: {message}")return jsonify({'response': f'Hello, {message}'})if __name__ == '__main__':app.run(host='0.0.0.0', port=8000)

三、创建requirements.txt文件

文件当中要有运行程序所需要的python库,这里我只用到了flask,所以可以简单编写并放在uni目录下

requirements.txt文件内容(程序简单,只用到了Flask)

Flask

也可以在文件中指定版本比如(Flask==3.03)

四、编写 Dockerfile

参考我的文件结构

# 使用Python 3作为基础镜像
FROM python:3.10.0# 设置工作目录
WORKDIR /app# 复制项目文件到容器中
COPY uni /app/uni# 安装项目依赖项
RUN pip install -r uni/requirements.txt# 暴露端口
EXPOSE 8000# 定义容器启动命令
CMD ["python3", "uni/testweb.py" ]

配置说明:

  • FROM python:3.10.0 我使用的python版本为3.10.0
  • WORKDIR /app  app为工作目录文件,名字随意取即可,注意要和下面的保持一致
  • EXPOSE 8000 Linux服务器上要运行在8000端口(可由自己决定)
  • ["python3", "uni/run.py" ]python项目的启动程序为uni文件夹下面的run.py

五、编译并导出镜像文件

在当前目录终端中运行如下命令

docker build -t image_name .

image_name是镜像名称,自己随意取

5.1 指定架构编译

在一些linux系统,比如centos中,不支持arm64架构,所以需要指明为amd64,不然会报错

docker buildx build --platform linux/amd64 -t image_name:1.0 .

5.2 导出镜像文件 

运行下面命令就可以导出

docker save -o save_name.tar image_name

成功后可在当前项目根目录下看到.tar文件 (llmchain是我自己取的文件名

六、服务器运行 

6.1 导入镜像

将tar文件转到Linux系统中,在当前目录终端运行如下命令

docker load -i llmchain.tar

可以通过下面命令查看是否导入成功

docker images

6.2 映射容器端口到宿主机端口

运行如下命令

docker run -d --name llmchain -p 8000:8000 llmchain

 可通过下面命令检验是否已运行

docker ps

七、Windows系统通过postman远程访问 

上面步骤都成功进行之后,现在你的 Flask 应用程序应该在 Docker 容器中运行,可以在Windows系统上运行postman

访问:http://服务器ip+端口 /hello

这里以我的postman截图

以下是在 Postman 中设置请求的详细步骤

  • 在 URL 输入框中输入 http://服务器ip:8000/hello
  • 在 Body 选项卡中选择 raw 并选择 JSON
  • 下面输入 JSON 请求体
  • 点击 Send 按钮

 即可获得从Linux服务器上传来的响应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3266502.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下普通用户无法执行sudo指令

当执行sudo指令时出现: xxx(普通用户名字) is not in the sudoers file 说明在/etc/sudoers文件中没有把xxx加入到可执行sudo指令的名单中,因此需要修改sudoers文件。 解决方法:1、vim /etc/sudoers (要…

【PHP】系统的登录和注册

一、为什么要学习系统的登录和注册 系统的登录和注册可能存在多种漏洞,这些漏洞可能被恶意攻击者利用,从而对用户的安全和隐私构成威胁。通过学习系统的登录和注册理解整个登录和注册的逻辑方便后续更好站在开发的角度思考问题发现漏洞。以下是一些常见…

VINS-Fusion 回环检测pose_graph_node

VINS-Fusion回环检测,在节点pose_graph_node中启动。 pose_graph_node总体流程如下: 重点看process线程。 process线程中,将订阅的图像、点云、位姿时间戳对齐,对齐后分别存入image_msg、point_msg、pose_msg。pose_msg为VIO后端优化发布的位姿。 一、创建关键帧keyFram…

分享几种电商平台商品数据的批量自动抓取方式

在当今数字化时代,电商平台作为商品交易的重要渠道,其数据对于商家、市场分析师及数据科学家来说具有极高的价值。批量自动抓取电商平台商品数据成为提升业务效率、优化市场策略的重要手段。本文将详细介绍几种主流的电商平台商品数据批量自动抓取方式&a…

【CI/CD】docker + Nginx自动化构建部署

CI/CD是什么 CI/CD 是持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery)的缩写,它们是现代软件开发中用于自动化软件交付过程的实践。 1、…

把 网页代码 嵌入到 单片机程序中 2 日志2024/7/26

之前不是说把 网页代码 嵌入到 单片机程序中 嘛! 目录 之前不是说把 网页代码 嵌入到 单片机程序中 嘛! 修改vs的tasks.json配置 然后 测试 结果是正常的,可以编译了 但是:当我把我都html代码都写上去之后 还是会报错!!! 内部被检测到了,没辙,只有手动更新了小工具代码 …

摄影灯影视灯LED升降压恒流IC-惠海H5228支持 6.5V12V24V36V48V60V75V升压、降压芯片

H5228 LED升降压IC产品分析: H5228是惠海公司推出的一款高性能LED恒流驱动器,可满足多种复杂应用场景下的照明需求而设计。以下是对该产品的详细分析: 一、技术优势 宽电压输入范围:支持6.5V至75V的宽输入工作电压范围&#xf…

学习Numpy的奇思妙想

学习Numpy的奇思妙想 本文主要想记录一下,学习 numpy 过程中的偶然的灵感,并记录一下知识框架。 推荐资源:https://numpy.org/doc/stable/user/absolute_beginners.html 💡灵感 为什么 numpy 数组的 shape 和 pytorch 是 tensor 是…

GPT-4o Mini:探索最具成本效益的小模型在软件开发中的应用

随着人工智能技术的迅猛发展,自然语言处理(NLP)领域也取得了显著的进步。OpenAI 最新发布的 GPT-4o Mini 模型,以其卓越的性能和极具竞争力的价格,成为了广大开发者关注的焦点。作为一名长期关注人工智能及其在软件开发…

屏幕管控——保护文档内容安全

屏幕管控是保护文档内容安全的重要手段之一,它涉及到对终端屏幕的使用、访问权限、内容展示以及操作行为的监控和管理。专业的企业级防泄密系统,如金刚钻信息,会有一些专业功能针对屏幕这块有对应的防护措施。 一、屏幕水印设置 屏幕水印是…

Vue3 + Vite 打包引入图片错误

1. 具体报错 报错信息 报错代码 2. 解决方法 改为import引入&#xff0c;注意src最好引用为符引入&#xff0c;不然docker部署的时候可能也会显示不了 <template><img :src"loginBg" alt""> </template><script langts setup> …

C95之重要特性及用法实例(五十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…

2019数字经济公测大赛-VMware逃逸

文章目录 环境搭建漏洞点exp 环境搭建 ubuntu :18.04.01vmware: VMware-Workstation-Full-15.5.0-14665864.x86_64.bundle 这里环境搭不成功。。patch过后就报错&#xff0c;不知道咋搞 发现可能是IDA加载后的patch似乎不行对原来的patch可能有影响&#xff0c;重新下了patch&…

Chapter 5: 二叉树详解

在探索计算机科学和编程世界的旅途中&#xff0c;数据结构是构成程序骨干的重要组成部分。它们不仅仅是存储数据的容器&#xff0c;更是提高算法效率、优化资源使用的关键。在众多的数据结构中&#xff0c;二叉树以其独特的结构和灵活性&#xff0c;成为了实现高效算法和解决复…

react入门到实战-day2-7.21

昨天晚上刚学完已经一点了&#xff0c;来不及写笔记&#xff0c;主要是想睡觉哈&#xff0c;所以今天补上&#xff0c;我发现效率还挺高的&#xff0c;今天重新做笔记&#xff0c;加固了昨天的知识点&#xff0c;要不以后都这样子哈&#xff0c;学完第二天再写哈&#xff0c;要…

中断相关驱动详解

1. 中断的硬件框架 1.1 中断路径上的3个部件 中断源 中断源多种多样&#xff0c;比如GPIO、定时器、UART、DMA等等。 它们都有自己的寄存器&#xff0c;可以进行相关设置&#xff1a;使能中断、中断状态、中断类型等等。 中断控制器 各种中断源发出的中断信号&#xff0c;汇聚…

python实现盲反卷积算法

python实现盲反卷积算法 盲反卷积算法算法原理算法实现Python实现详细解释优缺点应用领域盲反卷积算法 盲反卷积算法是一种图像复原技术,用于在没有先验知识或仅有有限信息的情况下,估计模糊图像的原始清晰图像和点扩散函数(PSF)。盲反卷积在摄影、医学成像、天文学等领域…

Tinygrad,llama3,Reward Model

目录 Tinygrad 与其他框架的比较 llama3 Reward Model Tinygrad 是一个轻量级的深度学习框架,由George Hotz(也被称为geohot)开发。以下是对Tinygrad的详细介绍: 与其他框架的比较 与PyTorch、TensorFlow等更全面的深度学习框架相比,Tinygrad在功能上可能有所限制,…

基于opencv的答题卡识别

文章目录 一、背景需求二、处理步骤图片预处理检测到答题卡轮廓透视变换找每个圆圈的轮廓轮廓排序判断是否答题正确 一、背景需求 传统的手动评分方法耗时且容易出错&#xff0c;自动化评分可以可以显著提高评分过程的速度和准确性、减少人工成本。 答题卡图片处理效果如下&am…

Unity Android接入SDK 遇到的问题

1. buildtools、platformtools、commandline tools 以及compiled sdk version、buildtools sdk version、target sdk version 的说明 Android targetSdkVersion了解一下 - 简书 2. 查看.class 和.jar文件 jd_gui 官网地址&#xff1a; 下载jd_gui 工具 &#xff0c;或者 idea 下…