首页 > Python资料 博客日记
【Python系列】Python 项目 Docker 部署指南
2024-07-06 20:00:04Python资料围观150次
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
随着容器化技术的兴起,Docker 成为了一种流行的应用部署方式。它通过将应用及其依赖环境打包在一起,解决了"在我机器上可以运行"的问题,使得应用能够在任何支持 Docker 的环境中无缝运行。本文将详细介绍如何将 Python 项目部署到 Docker 容器中。
一.基础介绍
1. Docker 简介
Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的运行环境到一个可移植的容器中。Docker 使用 Linux 容器(LXC)技术,但提供了比传统容器更加易用的工作流和用户界面。
2. 环境准备
在开始之前,请确保你的开发机器上已经安装了 Docker。你可以访问 Docker 官网下载并安装适合你操作系统的 Docker 版本。
3. 创建 Dockerfile
Dockerfile 是一个文本文件,包含了一系列的指令,用于自动化构建 Docker 镜像。以下是一个基本的 Python 项目的 Dockerfile 示例:
# 使用官方 Python 运行时作为父镜像
FROM python:3.8-slim
# 设置工作目录
WORKDIR /app
# 将当前目录内容复制到工作目录
COPY . /app
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露端口
EXPOSE 8000
# 运行应用
CMD ["python", "app.py"]
4. 构建 Docker 镜像
在 Dockerfile 所在的目录下打开终端,运行以下命令来构建 Docker 镜像:
docker build -t my-python-app .
这里 -t
参数用于给镜像指定一个标签,.
表示 Dockerfile 在当前目录。
5. 运行 Docker 容器
使用以下命令从镜像启动一个容器:
docker run -d -p 8000:8000 my-python-app
-d
参数表示后台运行容器,-p
参数用于端口映射,将容器的 8000 端口映射到宿主机的 8000 端口。
6. 访问应用
如果一切顺利,你现在可以通过浏览器访问 http://localhost:8000
来查看运行在 Docker 容器中的 Python 应用。
7. 数据持久化
在某些情况下,你可能需要持久化应用数据。Docker 提供了数据卷(volumes)来实现这一点。你可以使用以下命令来运行容器并挂载数据卷:
docker run -d -p 8000:8000 -v my-data:/app/data my-python-app
这里 -v
参数用于创建一个数据卷并将其挂载到容器内的 /app/data
目录。
8. 容器管理
Docker 提供了一系列命令来管理容器,例如:
docker ps
:列出正在运行的容器。docker stop <container_id>
:停止指定的容器。docker start <container_id>
:启动已停止的容器。docker logs <container_id>
:查看容器的日志。
9. Docker Compose
对于复杂的应用,你可能需要同时运行多个容器。Docker Compose 允许你通过一个 YAML 文件来定义多个容器的配置,然后使用一个命令来启动或停止它们。创建一个 docker-compose.yml
文件:
version: "3"
services:
web:
build: .
ports:
- "8000:8000"
redis:
image: "redis:alpine"
使用以下命令启动所有服务:
docker-compose up -d
二.实现步骤
1.Dockerfile
FROM python:3.11.5-slim
WORKDIR /kg-qa/
COPY .env .env
COPY ./base ./base
COPY ./manager ./manager
COPY ./config/config.yaml ./config/config.yaml
COPY ./config/logger.ini ./config/
COPY ./base_run.sh ./ServerApp.py ./__init__.py ./
COPY ./requirements.txt ./requirements.txt
# 安装 Python 依赖
RUN pip install --upgrade pip
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 将应用代码复制到工作目录
COPY . /kg-qa/
ENTRYPOINT ["sh", "./base_run.sh"]
2.base_run.sh
#!/bin/sh
uvicorn ServerApp:app --host 0.0.0.0 --port 8080 --loop asyncio
3.启动脚本
#!/bin/sh
# 定义镜像名称和标签
IMAGE_NAME="kg-qa:latest"
CONTAINER_NAME="kg-qa"
# 切换到项目目录
cd /data/kg/kg-qa
# 切换到开发分支并拉取最新代码
echo "Checking out to development branch and pulling latest changes..."
git checkout dev
git pull
# 构建Docker镜像
echo "Building Docker image..."
docker build -t $IMAGE_NAME .
# 检查容器是否正在运行
if docker ps -a | grep -q $CONTAINER_NAME; then
echo "Stopping and removing existing container..."
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
fi
# 启动Docker容器
echo "Starting container..."
docker run -d \
--name $CONTAINER_NAME \
-p 8080:8080 \
--restart=always \
--privileged=true \
-e TZ=Asia/Shanghai \
-v /etc/localtime:/etc/localtime:ro \
-v /data/kg/config/env.properties:/kg-qa/.env \
-v /data/kg/config:/kg-qa/config \
$IMAGE_NAME
echo "Container started successfully!"
# 打印容器日志
echo "Container logs:"
docker logs -f $CONTAINER_NAME
三.总结
Docker 为 Python 项目提供了一种快速、一致且可移植的部署方式。通过本文的介绍,你应该已经了解了如何将 Python 项目部署到 Docker 容器中。ocker 的世界非常广阔,本文只是冰山一角,还有许多高级特性去探索和学习。
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程