当前位置: 首页 > news >正文

如何将本地的python项目部署到linux服务器中

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂

前言

本地写好的python项目,如何部署在服务器上运行呢?今天,我们就来抽一点点时间来看看。(网上找的资料,大部分都囫囵吞枣的,看过之后难以吸收,所以今天就自己整理整理)

1.生成项目的依赖列表

在本地项目中的终端,需要执行命令:

pip freeze > requirements.txt

然后我们会发现在项目的根目录下会生成一个文件,如图所示:

2.在项目中创建dockerfile文件,示例如下:


FROM python:3.10-slim# 设置工作目录
WORKDIR /home/app
# 复制项目文件到容器中
COPY . /home/app
# 安装项目依赖项
RUN pip install -r requirements.txt
# 运行
CMD ["python", "main.py"]

3.将项目文件和源码都上传至服务器中

自行想办法上传就行,相关上传软件市面上多的很,我这边使用的是WindTerm,这个工具可以将文件直接拖到服务器上,且上传很快。

4.使用命令构建docker镜像,如下是命令:

docker build -t <镜像名称> <Dockerfile路径>

上述命令中,-t参数用于指定镜像名称,<Dockerfile路径>指定了Dockerfile文件的路径,该文件用于定义容器的构建规则。

下面是个示例:

docker build -t ciyun-project:v1.0 .

注意,最后有个小数点。

5.停止并删除旧的容器(如果需要):

如果你之前已经运行了一个容器,并且想要用新的镜像替换它,首先需要停止并删除旧的容器:

docker stop 镜像名
docker rm 镜像名

5.启动容器

运行新的容器:
使用新的镜像启动容器:

在重新构建了镜像后,我们需要启动容器来运行修改后的项目代码。可以使用以下命令启动容器:

docker run -d -p <宿主机端口>:<容器端口> --name <容器名>  <镜像名称>

代码示例:

docker run -d -p 7582:7582 --name fastapi-project ciyun:v1.0

6.查看运行状态与日志

docker psdocker logs 你的容器id

7.附fastapidockerfile文件

FROM python:3.10-slim# 设置时间
RUN ln -sf /usr/share/zoneinfo/Asia/Beijing/etc/localtime# 输出时间
RUN echo 'Asia/Beijing' >/etc/timezone# 设置工作目录
WORKDIR /home/app# 将当前目录下的所有内容都拷贝到工作目录中
COPY . /home/app# 禁用缓存并批量安装包(后面的链接是利用豆瓣源安装,速度会加快)
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.douban.com/simple/# 暴露端口
EXPOSE 7581# 运行命令
CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "7581"]

8.附纯python项目的dockerfile文件

FROM python:3.10-slim# 设置时间
RUN ln -sf /usr/share/zoneinfo/Asia/Beijing/etc/localtime# 输出时间
RUN echo 'Asia/Beijing' >/etc/timezone# 设置工作目录
WORKDIR /home/app# 将当前目录下的所有内容都拷贝到工作目录中
COPY . /home/app#RUN pip install -U pip
#RUN pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
#RUN pip config set install.trusted-host mirrors.aliyun.com
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simpleCMD ["python", "main.py"]
http://www.lryc.cn/news/301557.html

相关文章:

  • 每日五道java面试题之java基础篇(五)
  • HiveSQL——用户行为路径分析
  • 专利的申请
  • 嵌入式学习 C++ Day5、6
  • 阿里云香港服务器cn2速度测试和租用价格表
  • 《学成在线》微服务实战项目实操笔记系列(P92~P120)【下】
  • php数据类型以及运算符、判断条件
  • 大数据01-导论
  • 智能网卡(SmartNIC):增强网络性能
  • 算法刷题day14
  • 个性签名大全
  • 前端常用代码整理(不断更新中)— js,jquery篇(2)
  • 普中51单片机学习(六)
  • visual studio注册码
  • Studio One 6.5下载安装激活图文教程
  • Kubernetes(K8S)集群部署实战
  • 流畅的Python(十)-序列的修改、散列和切片
  • TCP/IP五层各层协议详解
  • MySQL 基础知识(九)之视图
  • 算法之力扣数青蛙
  • 【后端高频面试题--Nginx篇】
  • TiDB 在医疗保障信息平台的应用实践
  • 支付交易——跨境交易
  • 上位机图像处理和嵌入式模块部署(上位机主要功能)
  • 【前端工程化面试题】webpack的module、bundle、chunk分别指的是什么?
  • 软件实例分享,家具生产出库管理系统软件教程
  • [uniapp的页面传参]详细讲解uniapp中页面传参的传递方式和接受方式 使用案例 代码注释
  • Python实现时间序列分析霍尔特季节性平滑模型(Holt算法)项目实战
  • Rokid Station 进fastboot
  • Java支持的默认访问修饰符是什么?