使用docker容器化部署python项目

使用docker部署python

需求说明

从Hbase中读取到音频文件,再使用python的librosa模块进行语音的有效时长解析。

使用docker的原因

因为要部署的机器是离线环境,在离线环境下安装python环境的步骤如下:
进入外网python虚拟环境
导入虚拟环境中已安装包的信息到requirements.txt 文件中
pip freeze --all >requirements.txt
创建一个临时目录,将安装包下载到该目录下
mkdir whls
cd whls
pip download -r ../requirements.txt -d .
将创建好的虚拟环境打包,拷贝到新的环境中
解压,激活该虚拟环境
将whls 目录拷贝解压到新环境的目录下
执行安装命令安装
pip install --no-index --find-links=whls -r requirements.txt
使用离线安装步骤麻烦,且不能很好的复用,而且在实际部署到服务器上时容易出错,因此使用docker进行部署。

docker部署步骤

下载docker

本人使用的是mac系统,从docker官网:(https://www.docker.com/) 下载到本地,然后进行安装。安装完成之后,双金进入docker。

下载python包

使用以下命令拉取python包:
docker pull python:3.10.6
python版本号对应自己的python版本
下载完成后使用一下命令查看images:
docker images
可以看到一下结果:
REPOSITORY                 TAG          IMAGE ID       CREATED        SIZE
docker/welcome-to-docker   latest       73c4dee5ca43   4 weeks ago    13.1MB
python                     3.10.6       d25a66380b10   8 months ago   921MB
docker/welcome-to-docker 是docker自带的测试镜像。python是刚才下载的image

生成requirements.txt文件

在自己的python项目中使用命令pip freeze --all >requirements.txt生成requirements.txt文件文件。

编写dockerfile

使用docker 生成镜像需要编写dockerfile文件来指定生成镜像的路径等。以下是一个示例:

FROM python:3.10.6
RUN mkdir /opt/mycode
COPY ./python_file_name  /opt/mycode/python_file_name
RUN pip install -r /opt/mycode/python_file_name/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
WORKDIR /opt/mycode
CMD python main.py

注意事项:

  1. FROM python:3.10.6 是指把python:3.10.6当成base包。
  2. RUN mkdir /opt/mycode 是在docker的独立linux系统中生成/opt/mycode 目录。
  3. 把本地的python项目文件拷贝到刚创建的镜像目录中。
  4. 使用pip install安装此项目需要的依赖包 -i 把pip源修改为阿里云,提高下载速度。
  5. WORKDIR /opt/mycode 把此目录设置问工作目录。
  6. 执行main.py

生成镜像

使用以下命令生成镜像:
docker build -t testimages:1.0.1-dev .
testimages:1.0.1-dev为生成的images名称,.表示在当前目录,docker会自动在当前目录寻找文件名为dockerfile的文件,然后根据文件内容生成镜像。

把镜像保存为tar包

使用以下命令把镜像打包:
docker save testimages:1.0.1-dev > testimages.tar
interphonetest:1.0.1-dev为镜像名称,interphonetest.tar为打包的包名

注意事项

在使用FROM python:3.10.6 生成镜像后,如果要进行代码调试,每次都要重新生成镜像,需要每次都使用pip install去下载依赖就很需要时间,可以编写以下dockerfile-tmp文件
FROM testimages:1.0.1-dev
COPY ./python_file_name  /opt/mycode/python_file_name
然后使用docker build -f dockerfile-tmp -t testimages:1.0.1-dev 
然后用docker save 重新保存

使用docker镜像

将保存好的tar包上传到服务器,使用以下命令:
docker load -i testimages.tar
然后查看images:
docker images
复制新上传的images的IMAGE ID,使用以下命令:
docker run -it IMAGE ID bash
执行后将会进入bash命令,可以使用python 来执行py文件
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值