前言
本地写好的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
启动的时候,挂在目录:
docker run -v /home/app/ciyun:/home/app/ciyun -p 7582:7582 -d --name fastapi-project ciyun:v1.0
这里的 -v /home/app/ciyun:/home/app/ciyun 参数指定了宿主机的 /home/app/ciyun 目录挂载到容器的 /home/app/ciyun 目录。-p 7582:7582 参数将容器的 7582 端口映射到宿主机的 7582 端口。-d 参数表示后台运行容器,–name your_container_name 为你的容器指定一个名称,your_image_name 是你的 Docker 镜像名称。
6.查看运行状态与日志
docker ps docker 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/simple CMD ["python", "main.py"]