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://www.mzph.cn/news/875403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 查询 limit 100000000, 10 和 limit 10 速度一样快吗?

MySQL 查询 limit 100000000, 10 和 limit 10 速度一样快吗? MySQL内部分为server层和存储引擎层。一般情况下存储引擎都用innodb。 server层有很多模块,其中需要关注的是执行器是用于跟存储引擎打交道的组件。 执行器可以通过调用存储引擎提供的接口&…

整合StarRocks更新表全部知识点

总结StarRocks更新表的全部内容的集合(V3.2版本) 一、基本功能 聚合函数replace的聚合表主键被主键表替代采用Merge-On-Read的策略,读取时需要在线Merge多个版本的数据文件,谓词和索引无法下推至底层数据,会严重影响…

LeetCode:对称的二叉树(C语言)

1、问题概述:给一个二叉树,看是否按轴对称 2、示例 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 3、分析 (1&a…

教学用MQTT工具的思考

前言 我在《智能物联网应用设计》课程中有个实验就是学习MQTT的使用,目前使用的是以下几个工具: 客户端使用MQTTX本地服务器使用的是mosquitto 云端服务器采用的巴法云协议分析软件采用的是Wireshark 这里Wireshark基本没有啥可以替代的,而…

Vue3 study

Vue3 工程 创建 还是能像 vue2 一样通过 vue-cli 创建,即 vue create projectName 但是官方更推荐 vite 创建,即 npm create vuelatest,然后从项目名开始配置 总结:入口在 index.html,它会引入 main.ts,…

Win11 操作(四)g502鼠标连接电脑不亮灯无反应

罗技鼠标连接电脑不亮灯无反应 前言 罗技技术💩中💩,贴吧技术神中神! 最近买了一个g502,结果买回来直接插上电脑连灯都不亮,问了一下客服。客服简单的让我换接口,又是下载ghub之类的&#xf…

Leetcode—297. 二叉树的序列化与反序列化【困难】

2024每日刷题(148) Leetcode—297. 二叉树的序列化与反序列化 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(…

低代码+工作流:拔高企业效率的数字化神器

前言 传统的软件开发过程中,随着产品业务的不断更新迭代,会产生大量的重复性的工作。这些重复性的工作其实是遵循着某种特定的规则,假如在开发阶段我们没有做好很好的抽象,在后期做新业务新产品时,我们仍然要花费大量…

AutoMySQLBackup execution.. Backup failed Docker部署mysql 自动备份失败!!

摘要: Docker容器部署的mysql5.7版本遇到使用AutoMYSQLBackup备份失败了,反复修改automysqlbackup.conf也不起效。这里推荐一种新的办法绕开老路子直接备份。 目录 一、环境介绍 二、AutoMYSQLBackup 三、问题描述 四、解决思路 4.1第一种解决思…

Java黑色界面陪玩高端小程序源码陪练APP源码H5公众号源码电竞系统

🚀【电竞新纪元】解锁高端陪玩小程序源码 & 陪练APP秘籍,H5公众号全攻略! 🎮 开篇:电竞热潮下的新机遇 Hey游戏迷们!随着电竞行业的蓬勃发展,你是否也想在这股浪潮中分得一杯羹&#xff1…

opencascade AIS_Manipulator源码学习

前言 AIS_Manipulator 是 OpenCASCADE 库中的一个类,用于在3D空间中对其他交互对象或一组对象进行局部变换。该类提供了直观的操控方式,使用户可以通过鼠标进行平移、缩放和旋转等操作。 详细功能 交互对象类,通过鼠标操控另一个交互对象…

【网络安全】构建稳固与安全的网络环境:从“微软蓝屏”事件中汲取的教训

发生什么事了? 近日,一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件,不仅成为科技领域的热点新闻,更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件,源于美国电脑安全技术公司“众击”提供的一个…

Layui Selcet选择框动态选择问题

前言 时隔多日我也是重新回归写作,高考已经完毕,我将继续我的文章创作,今天我将分享的是我在开发我自己的一个新项目所遇到的问题,这里预告一下我的新项目: VitaApi管理系统 这个系统可以看作是萌新源api管理系统的延续&#xff…

HarmonyOS鸿蒙应用开发-ZRouter让系统路由表变得更简单

介绍 ZRouter是基于Navigation系统路由表和Hvigor插件实现的动态路由方案。 系统路由表是API 12起开始支持的,可以帮助我们实现动态路由的功能,其目的是为了解决多个业务模块(HAR/HSP)之间解耦问题,从而实现业务的复…

Redis高可用技术之持久化

一、Redis高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是一年有多少秒可以提供正常服务(99.9%、99.99%、99.999%等)。但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供…

MySQL InnoDB事务隔离和并发控制面试题详解

1. 为什么 MySQL 使用 B+ 树作为索引而不是 B 树? MySQL 选择使用 B+ 树作为索引主要有以下几个原因: 减少 IO 次数,提高效率:B+ 树的所有数据都存储在叶子节点,非叶子节点只存储索引,树的高度较低,因此查找路径较短,减少了磁盘 IO 次数。查询效率更加稳定:由于数据仅…

Hyper-V 安装 CentOS 8.5

前言 Hyper-V安装文档:在 Windows 10 上安装 Hyper-VCentOS 系统下载:CentOS 国内镜像源 8.5.2111作者:易墨发布时间:2023.10.01原文地址:https://www.cnblogs.com/morang/p/devops-hyperv-centos-install.html使用命令安装 以管理员身份运行 PowerShell 命令: Enable-…

c++初阶知识——string类详解

目录 前言: 1.标准库中的string类 1.1 auto和范围for auto 范围for 1.2 string类常用接口说明 1.string类对象的常见构造 1.3 string类对象的访问及遍历操作 1.4. string类对象的修改操作 1.5 string类非成员函数 2.string类的模拟实现 2.1 经典的string…

GAMES104:05游戏引擎中的渲染系统2:渲染中的光照、材质和shader-学习笔记

文章目录 一、渲染方程及其挑战二、基础光照解决方案-简化版简化光源简化材质简化阴影 三、基于预计算的全局光照3.1挑战和计算思路傅里叶变换球谐函数(Spherical Harmonics) 3.2 SH Lightmap:预计算 GI3.3 探针 Probe:Light Prob…

无涯·问知财报解读,辅助更加明智的决策

财报解读就像是给公司做一次全面的体检,是理解公司内部运作机制和市场表现的一把钥匙,能够有效帮助投资者、分析师、管理层以及所有市场参与者判断一家公司的健康程度和发展潜力。 星环科技无涯问知的财经库内置了企业年报及财经类信息,并对…