如何将本地的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.附fastapi
的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 --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"]