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,一经查实,立即删除!

相关文章

基于深度学习的内容推荐

基于深度学习的内容推荐系统通过分析用户行为、内容特征以及用户与内容之间的交互数据,自动向用户推荐他们可能感兴趣的内容。这类系统在新闻、视频、音乐、社交媒体等平台中广泛应用。以下是对这一领域的系统介绍: 1. 任务和目标 内容推荐系统的主要任…

js求和reduce使用方法

1.使用循环结构&#xff08;如for循环&#xff09;进行累加 let sum 0; for (let i 1; i < 100; i) {sum i; } console.log(sum); // 输出5050 2.使用Array.prototype.reduce方法进行数组元素求和&#xff1a; const numbers [1, 2, 3, 4, 5]; const sum numbers.re…

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

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

整合StarRocks更新表全部知识点

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

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

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

解决 Android 应用安装错误:INSTALL_FAILED_BAD_PERMISSION_GROUP

解决 Android 应用安装错误&#xff1a;INSTALL_FAILED_BAD_PERMISSION_GROUP 在开发 Android 应用时&#xff0c;我们有时会遇到安装错误。这篇文章将讨论一种常见的错误&#xff1a;INSTALL_FAILED_BAD_PERMISSION_GROUP&#xff0c;并介绍解决方法。 问题描述 在尝试安装…

Go实用技巧

Golang实用技巧 Golang实用技巧 Context 1. 为了gorouines更可靠&#xff0c;避免实用context.Background()2. 不幸得是&#xff0c;context.Value 不是我们的朋友3. 使用context.WithoutCancel 保持 context 活跃 Context 1. 为了gorouines更可靠&#xff0c;避免实用con…

教学用MQTT工具的思考

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

Vue3 study

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

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

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

Go 1.22 remote error: tls: handshake failure

Golang 1.22 remote error: tls: handshake failure 1.22之前运行下面代码是没有错误 package mainimport ("crypto/tls""fmt""net/http" )func main() {http.DefaultTransport.(*http.Transport).TLSClientConfig &tls.Config{InsecureS…

从零开始!JupyterNotebook的安装教程

安装 Anaconda 1、下载 Anaconda&#xff1a; 访问 Anaconda 官方网站 (https://www.anaconda.com/products/distribution/) 下载适合您操作系统的 Anaconda 发行版。 2、安装 Anaconda&#xff1a; Windows&#xff1a;运行下载的安装程序&#xff0c;选择“Just Me”…

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

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

Esxi 上的 CentOS 7.6 系统中搭建本地 Yum 源

1. 挂载 CentOS 安装盘 在 ESXi 管理界面中&#xff0c;将 CentOS 安装 ISO 文件挂载到虚拟机。 2. 挂载光盘镜像 在虚拟机中执行以下命令&#xff0c;将安装盘挂载到 /mnt/cdrom&#xff1a; mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom3. 禁用所有默认的 YUM 源 进入…

4. kubernetes资源——deployment无状态负载

kubernetes资源——deployment无状态负载 一、deployment无状态负载1、deployment无状态负载 二、创建deployment1、创建deployment2、验证副本维护 三、deployment滚动更新1、创建pod2、测试滚动更新流程2.1、修改镜像版本、或者副本数2.2、执行更新2.3、查看更新过程2.4、查看…

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

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

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

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

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

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

学习笔记9:雪花算法

雪花算法 雪花算法&#xff08;Snowflake Algorithm&#xff09;是一种生成唯一ID的算法&#xff0c;最初由Twitter开发。它的主要特点是生成的ID是64位的长整型数字&#xff0c;具有以下特性&#xff1a; 唯一性&#xff1a;每个生成的ID都是唯一的。趋势递增&#xff1a;生…

Python爬虫小项目实战

1.自动获取小说多个章节内容 2.获取英雄联盟里面的全部英雄 3. 简单地自动抽奖系统 4. 简单地点赞系统 5. 制作查询手机号工具 6. 制做登录系统 7. 操作excel办公自动化 8. 自动批量保存图片 9. 获取NBA数据 10. 获取彩票信息 11. 获取房地产信息 12. 获取小说…