0


【docker】—— 部署python项目

使用docker部署python项目

这里默认已经安装好docker并进行了相关配置,只演示使用docker打包并部署一个简单的python项目。
更多docker基本操作参考:【docker】—— docker常用操作

下面是准备好的项目和程序:

  1. 项目结构:

项目:DOCKER_PYTHON_TESE
文件:main.ipynb

  1. 代码如下:
# main.ipynb代码import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

# 创建一个随机图
num_nodes =100# 节点数量
prob_edge =0.1# 边的生成概率
G = nx.erdos_renyi_graph(num_nodes, prob_edge)# 初始化节点状态:0表示未感染,1表示感染
node_states = np.zeros(num_nodes)# 随机选择一个感染节点
initial_infected = np.random.randint(num_nodes)
node_states[initial_infected]=1defpropagate_infection(G, node_states, infection_prob=0.3, steps=10):for _ inrange(steps):
        new_states = node_states.copy()for node in G.nodes():if node_states[node]==1:# 如果该节点已感染# 检查相邻节点for neighbor in G.neighbors(node):if node_states[neighbor]==0:# 如果邻居未感染# 以一定概率感染邻居if np.random.rand()< infection_prob:
                            new_states[neighbor]=1
        node_states = new_states
    return node_states

# 模拟感染传播
final_states = propagate_infection(G, node_states)# 可视化结果
pos = nx.spring_layout(G)# 布局
colors =['red'if state ==1else'lightblue'for state in final_states]
nx.draw(G, pos, node_color=colors, with_labels=True, node_size=200)
plt.title("Random Diffusion Model")
plt.show()

一、 创建Dockerfile配置文件

Dockerfile是用来构建Docker镜像的文本文件(脚本文件),文本内容包含了一条条构建镜像所需的指令、参数和说明。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。相关的配置参数介绍可以参考:【docker】——docker常用操作

  1. 为项目创建一个Dockerfile的配置文件
#  Dockerfile配置文件# 使用官方的 Python 3.10 运行时作为父镜像
FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录内容到容器中的工作目录
COPY ..# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 指定容器启动时执行的命令
CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--allow-root", "--no-browser"]
  1. 参数介绍
  • FROM:指定我们运行的环境为python3.10(基础镜像),我们根据项目的情况在Dockerhub搜索相关的基础镜像和版本,如下图:

在这里插入图片描述

Simple Tags下有不同的版本可以选择。

  • WORKIR:设置项目目录
  • COPY:把文件复制到容器
  • RUN:安装项目运行的依赖库
  • CMD:运行容器后要执行的命令

二、 生成requirements.txt

为了方便项目的部署,我们可以创建requirements.txt来说明项目需要的依赖库。

  1. 安装pipreqs库 pip install pipreqs
  2. 自动生成requirements.txt pipreqs .

运行之后自动在项目目录下生成一个requirements.txt文件,如下图所示:
在这里插入图片描述
注:pipreqs是对于.py文件使用的,这里先把main.ipynb文件转成main.py然后自动生成,由于运行的是jupyter notebook文件,所以还要再requirements.txt中加上一个jupyter库,在实际操作过程中,大家可以根据实际情况来选择手动创建或自动生成。

在这里插入图片描述

三、 构建docker镜像

  1. 在终端运行下面命令来创建镜像 docker build -t my-python-app .

在这里插入图片描述

  1. 创建成功,查看镜像,输入下面命令 docker images

在这里插入图片描述

可以看到镜像my-python-app创建成功。

四、 运行docker容器

  1. 运行Docker容器 docker run -it --rm -p 8888:8888 my-python-app

参数解释:

  • -it:以交互模式运行容器,允许与容器进行交互
  • -p:端口映射
  • –rm:容器运行结束之后立刻删除(不保存数据)

在这里插入图片描述
2. 点击带token的链接自动跳转jupyter notebook
在这里插入图片描述
成功进入,打开main.ipynb运行,运行结果如下:
在这里插入图片描述
正常运行,进入下一步。

五、 镜像导出

将制作好的镜像打包并导出

  1. 导出镜像 docker save -o my-python-app.tar my-python-app

在这里插入图片描述

六、 重新部署

将打包好的镜像文件导入到别的电脑测试,这里没有新的电脑,先将原容器删除,并创建新的文件夹模拟新电脑。
补充:经实测,这周在学校的机房使用相同的步骤导入了镜像,并启动容器,完美运行!

  1. 准备工作
  • 删除旧的镜像 docker rmi my-python-app在这里插入图片描述
  • 准备新环境

项目:Docker_Python_Test——another_computer
镜像:my-python-app.tar

在这里插入图片描述

  1. 加载镜像
  • 导入镜像 docker load -i my-python-app.tar

在这里插入图片描述镜像已经导入

  1. 测试
  • 运行容器 docker run -it --rm -p 8888:8888 my-python-app

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

可以看到jupyter已经成功跑起来了,并且main.ipynb文件可以正常运行。

七、总结

Docker 是一个开源平台,用于自动化应用程序的部署、扩展和管理。它通过容器技术实现轻量级、可移植的应用打包,确保在不同环境中应用的一致性。关键组件包括:

  • 容器:运行应用的独立环境。
  • 镜像:容器的只读模板,包含应用及其依赖项。
  • Dockerfile:定义镜像构建过程的文本文件。

Docker 的优势在于快速部署、资源节省和环境隔离,广泛用于微服务架构、持续集成/持续部署(CI/CD)和开发环境搭建。使用简单的命令,可以轻松构建和管理应用容器。

标签: docker python 容器

本文转载自: https://blog.csdn.net/Lvyizhuo/article/details/143323046
版权归原作者 花间相见 所有, 如有侵权,请联系我们删除。

“【docker】—— 部署python项目”的评论:

还没有评论