-->

服务器docker上部署python项目

1. docker准备python环境与项目代码

1.1 查看docker内所有镜像:

//查看正在运行的镜像
sudo docker images
//查看所有镜像
sudo docker images -a

1.2 查看docker内所有容器:

//查看正在运行的容器
sudo docker ps 
//查看所有容器
sudo docker ps -a

1.3 docker安装anaconda镜像

sudo docker pull continuumio/anaconda3

1.4 将镜像生成容器启动

docker run --name 容器名 -idt anaconda镜像名

docker run --name test -idt continuumio/anaconda3

1.5 进入容器查看conda位置

docker exec -it 容器名 /bin/bash

docker exec -it test /bin/bash

1.6 退出容器

exit

1.7 新建annaconda的docker容器

sudo docker run --name 容器名 -idt 镜像名

sudo docker run --name dev_belt -idt continuumio/anaconda3

1.8 进入新建的docker内部:

sudo docker exec -it 容器名 /bin/bash

sudo docker exec -it dev_belt /bin/bash

1.9 查看conda位置:

conda info --envs

1.10 退出docker容器

exit

1.11 将本地环境复制到docker容器中

sudo docker cp 本地环境路径 容器名:容器内位置

sudo docker cp /media/uai901/ssd512_2/anaconda3/envs/lt dev_belt:/opt/conda/envs

1.12 将代码复制到docker容器中

sudo docker cp 本地项目位置 容器名:容器内位置

sudo docker cp /home/uai901/PycharmProjects/huayang2th_algo/huayang_2th_flask_belt dev_belt:/root/

1.13 安装vim

apt update

apt-get install vim

参考:https://www.cnblogs.com/gejuncheng/p/16425580.html

1.14 环境直接复制到docker容器中,可能会出现python路径不一致问题,修改pip pip3中开头的路径,如果使用到gunicorn,也要一并修改

pip:

vim pip

将pip中第1行改为(#!/opt/conda/envs/你的环境名/bin/python):

#!/opt/conda/envs/lt/bin/python

pip3:

vim pip3

将pip3中第1行改为(#!/opt/conda/envs/你的环境名/bin/python):

#!/opt/conda/envs/lt/bin/python

gunicorn:

vim gunicorn

将pip3中第1行改为(#!/opt/conda/envs/你的环境名/bin/python):

#!/opt/conda/envs/lt/bin/python

=========================================================

通过上述步骤,已经将所需运行内容准备完毕,接下来准备启动

=========================================================

2. 设置容器自启

2.1 在本地任意路径新建gunicorn.conf.py文件,并写入如下内容:

workers = 5
worker_class = "gevent"
bind = "0.0.0.0:5003"

0.0.0.0代表任何IP地址

2.2 将gunicorn.conf.py复制进容器内部(与main.py同级):

sudo docker cp
本地gunicorn.conf.py的路径 容器名:容器内路径

sudo docker cp /home/uai901/PycharmProjects/huayang2th_algo/huayang_2th_flask_belt/gunicorn.conf.py dev_belt:/root/huayang_2th_flask_belt

2.3 新建start.sh文件(与项目同级):

touch start.sh

2.4 编辑start.sh:

vim start.sh 

2.5 start.sh内容如下:

cd 项目路径下

gunicorn main:app -c ./gunicorn.conf.py

#!/bin/bash

cd /root/huayang_2th_flask_belt

gunicorn main:app -c ./gunicorn.conf.py

2.6 编辑开机自启文件:

vim ~/.bashrc

2.7 文件添加内容:

=================================================

注意:一定要先写conda activate 环境名,因为项目要在环境中运行,如果先运行项目,他会找不到gunicorn命令

=================================================

conda activate lt

cd /root

source start.sh

3. 将容器封装成镜像载入

将容器封装成镜像(dnmp_php58:5.8-fpm-jessie为安全带算法,dnmp_php57:5.7-fpm-jessie为漏油算法):

3.1 查看在运行容器:

sudo docker ps 
//找到 容器Id 及 CONTAINER ID ,如:38f61e7d26dc

3.2 打包容器为 image :

sudo docker commit 38f61e7d26dc  dnmp_php58:5.8-fpm-jessie

使用 docker images 会发现多出来一个image,REPOSITORY为 dnmp_php58,TAG为 5.8-fpm-jessie

3.3 保存image到文件:

sudo docker save -o 镜像压缩包名 镜像名:5.8-fpm-jessie

sudo docker save -o dnmp_php58.20230512.tar dnmp_php58:5.8-fpm-jessie

3.4 使用已保存的image文件:

sudo docker load -i dnmp_php58.20230512.tar

3.5 根据载入的镜像生成容器:

sudo docker run -it -d --name 容器名 -p 本地端口:docker端口 镜像名:5.8-fpm-jessie /bin/bash

sudo docker run -it -d --name dev_belt1 -p 5003:5003 dnmp_php58:5.8-fpm-jessie /bin/bash

3.6 进入到生成的容器内查看容器运行状态:

sudo docker exec -it dev_belt1 /bin/bash

4. 中途遇到的错误:

4.1 libGL.so.1报错:

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

运行命令解决:

apt-get update && apt-get install libgl1

注意:运行很慢,可以换镜像,我嫌麻烦,就没有换,多等了会

4.2 no NVIDIA driver报错:

RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx:

将代码中用显卡处理算法变为cpu处理

4.3 在docker内部运行算法报错(python main.py时报的错):

Cannot assign requested address

原因:main.py中ip地址没有设置成127.0.0.1

4.4 记得把接口/后面内容去除

因为我们要求docker内部每个算法在一个端口运行,例如:192.168.110.200:5001,不能是192.168.110.200:5001/a,所以要把接口后缀去除,这一步视情况而做

posted @   ꧁ʚ星月天空ɞ꧂  阅读(244)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示