前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python项目通过docker部署到Linux系统并实现远程访问

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

作者头像
丹牛Daniel
发布2024-07-26 12:37:19
2680
发布2024-07-26 12:37:19
举报
文章被收录于专栏:python机器学习教程

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

一、原本的python代码

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

代码语言:javascript
复制
# 打印一条简单的消息
print("Hello, World!")

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

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

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

代码语言:javascript
复制
from flask import Flask, request, jsonify

app = 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

参考我的文件结构

代码语言:javascript
复制
# 使用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

五、编译并导出镜像文件

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

代码语言:javascript
复制
docker build -t image_name .

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

5.1 指定架构编译

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

代码语言:javascript
复制
docker buildx build --platform linux/amd64 -t image_name:1.0 .

5.2 导出镜像文件

运行下面命令就可以导出

代码语言:javascript
复制
docker save -o save_name.tar image_name

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

六、服务器运行

6.1 导入镜像

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

代码语言:javascript
复制
docker load -i llmchain.tar

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

代码语言:javascript
复制
docker images

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

运行如下命令

代码语言:javascript
复制
docker run -d --name llmchain -p 8000:8000 llmchain

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

代码语言:javascript
复制
docker ps

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

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

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

这里以我的postman截图

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、原本的python代码
  • 二、创建一个简单的Flask应用程序
  • 三、创建requirements.txt文件
  • 四、编写 Dockerfile
  • 五、编译并导出镜像文件
    • 5.1 指定架构编译
      • 5.2 导出镜像文件
      • 六、服务器运行
        • 6.1 导入镜像
          • 6.2 映射容器端口到宿主机端口
          • 七、Windows系统通过postman远程访问
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档