利用Docker镜像进行python项目算法的简单部署

算法镜像封装教程:以实际项目为例

本项目以Docker镜像部署环境为主,python版本为python3.9.13,Docker版本大于20.0,测试系统和业务系统均为Linux。具体过程如下介绍:

本地服务器端,以python基础镜像为项目环境,进行项目搭建:(注意:docker容器内部需要数据和映射和端口映射,其次接口ip必须为"0.0.0.0",非固定IP)

项目文件结构如下图:
项目结构说明

  1. 利用Docker获取基础镜像,搭建本地项目测试环境,并进行端口,数据更新文件和日志文件地址的映射(docker相关基础,请自行查询):
docker pull docker.m.daocloud.io/python:3.9.13 # 拉取基础镜像 #启动基础镜像,进行端口,文件地址在宿主机和容器上的映射,注意相关参数:--name 后面的名称自定义 docker run -it -d --privileged=true --name qh_project 
-p 6252:6252 
-v /home/yiled_data/historydata:/home/yiled/hitstory_year_weather_data 
-v /home/yiled_data/logs:/home/yiled/logs 
docker.m.daocloud.io/python:3.9.13 bash # 进入容器 docker exec -it 容器ID bash 
# 容器内部资源更新,安装所需命令 
apt-get update apt-get install -y vim 
# 查看处于运行状态的容器,可以定位上面镜像启动是否成功,
docker ps -a 是查看所有状态的容器 
docker ps #将容器外面的项目文件拷贝到容器里面相关路径下,:号前面为宿主机地址,后面为容器地址,上面映射的也是一样的 
docker cp /home/yiled/ qh_project:/home/ 
#docker cp /path/to/project my_python_container:/app 
# 切换到项目文件下进行python环境的搭建 
cd home/yiled pip install -r requirements_39.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host https://mirrors.aliyun.com python app.py #测试环境不需要后台运行 ,业务环节需要后台运行,加入&符号 python app.py & #运行成功将基于该镜像的该容器重新提交,打包镜像。
#下面将容器提交成镜像,容器id可以用docker ps 查看,然后镜像名称和标签可以自己定义 
docker commit 容器ID(57096c0b78c2) 镜像名称:标签 
#导出、保存镜像,注意:demo.tar自定义,demo:v1是上面自定义的镜像名称和标签,会导出到当前所在的目录 
docker save -o demo.tar demo:v1
  1. 生产环境服务器端:业务环境过程和测试环境基本相似,具体如下
# 上传上面save的demo.tar文件,为镜像文件。 
docker load -i demo.tar # 查看上传的镜像是否成功 
docker images # 进行宿主机和容器上的相关文件地址的映射,:号前面为宿主机,后面为容器 
docker run -it -d --privileged=true --name qh_project 
-p 6252:6252 
-v /data/yileddata/historydata:/home/yiled/hitstory_year_weather_data 
-v /data/yileddata/logs:/home/yiled/logs qh_yiled:py3913 bash 
#查看镜像的容器是否启动成功 docker ps # 如果容器启动成功,进入容器,进入容器后的一切就是linux正常操作 
docker exec -it [容器ID] bash 
# 切换路径至项目文件下 
cd /home/yiled # 运行python执行文件,&代表后台运行,可以用ps -ef 查看运行进程 
python app.py &
  1. 自动化运行:(该项目中不用)

实现每天定时运行镜像中的 app.py,你可以使用 cron 来定时执行一个脚本。以下是具体步骤:

创建一个自动运行setup_cron.sh脚本文件,内容如下:

#!/bin/bash 

# cat命令内部创建run_app.sh启动脚本 
cat << 'EOF' > run_app.sh 
#!/bin/bash docker run --rm your_image_name python /path/to/app.py 
EOF 

# 赋予脚本执行权限 
chmod +x run_app.sh 

# 配置 cron 定时任务 
(crontab -l 2>/dev/null; echo "0 0 * * * /path/to/run_app.sh") | crontab -

将上述内容保存为一个 .sh 文件,例如 setup_cron.sh,然后执行该脚本,在终端命令框中输入:

chmod +x setup_cron.sh 
#赋予 setup_cron.sh 脚本执行权限 
./setup_cron.sh 
#执行 setup_cron.sh 脚本,从而创建 run_app.sh 脚本并配置 cron 定时任务。

几点说明:

--rm 是 Docker 运行容器时的一个选项,
表示在容器退出后自动删除该容器。
这样可以确保每次运行容器时都是干净的,
不会留下之前运行过的容器实例。
这对于临时运行一次性的任务非常有用,可以避免容器堆积。
所以,docker run --rm your_image_name python /path/to/app.py 的意思是: 使用your_image_name 镜像运行一个容器。在容器内执行python /path/to/app.py 命令。 
当命令执行完毕后,自动删除该容器。 
0 0 * * * /path/to/run_app.sh如果是每天下午3点10分开始运行,需要修改 cron 表达式。具体来说,cron 表达式的格式是 分 时 日 月 周,所以需要将时间部分改为 10 15 * * *。 cron 定时任务应该设置为: 10 15 * * * /path/to/run_app.sh 
要将定时任务设置为每天上午3点10分开始运行,你需要修改 cron 表达式。
具体来说,cron 表达式的格式是 分 时 日 月 周,所以你需要将时间部分改为 10 3 * * *。 因此,
cron 定时任务应该设置为: 10 3 * * * /path/to/run_app.sh 表示每天上午3点10分运行 run_app.sh 脚本。 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

擦玻璃过年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值