ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Docker打包OpenCV Python程序

2022-09-13 14:03:03  阅读:289  来源: 互联网

标签:容器 RUN Python dev id OpenCV https Docker docker


Docker

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

打包过程

  1. pip freeze > requirements.txt
  2. 编写dockerfile,需要注意的是这里安装了一些c++库文件供opencv使用,让笔者在打包时吃了一些苦头
# 将官方 Python 运行时用作父镜像
FROM python:3.9-slim
# 将工作目录设置为 当前目录
WORKDIR .
# 将当前目录内容复制到容器中
ADD . .
RUN apt-get update 
RUN apt install -y g++
RUN apt install -y cmake
RUN apt install -y make
RUN apt install -y wget unzip
RUN apt-get -y install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
# 安装 requirements.txt 中指定的任何所需软件包
RUN pip install -r requirements.txt
# 定义环境变量
#ENV NAME World
# 在容器启动时运行 main.py
CMD ["python", "main.py"]
#CMD ["python","./apps/min.py","worker","-l","info"]     ##faust程序worker启动命令
#指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 5005
  1. docker根据Dockerfile构建镜像
docker build -f Dockerfile -t qrdetect:1.1 .
  1. 根据名称为qrdetect:1.1的镜像运行名称为qr的容器,暴露容器内的端口5005为对外8081的端口
docker run --name qr -p 8081:5005 -d qrdetect:1.1 

docker实用命令

由于经验问题,我们可能会要经常使用一些镜像和容器命令

  • 列出容器id
docker ps -a
  • 列出id为xx容器的日志
+ docker logs id
  • 列出镜像id
docker image ls
  • 删除指定id镜像
docker rmi id
  • 删除指定id容器
docker rm id
  • 停止运行指定id容器
docker stop id
  • 导出指定id镜像
docker save -o qrdetect.tar 483128b19e21
  • 加载指定id镜像
docker load --input qrdetect2.tar
  • 导入指定id容器
docker import qrdetect.tar qr:1.1
  • 导出指定id容器
docker export bf2358939836 > qrdetect.tar

经验教训

    最好不用wsl进行打包,问题比较多,还是直接linux环境打包比较好

参考资料:

https://dennislwm.netlify.app/posts/installing-minikube-on-ubuntu-with-wsl-backend/

https://zhuanlan.zhihu.com/p/272541376

https://answers.microsoft.com/zh-hans/windows/forum/all/win11如何关闭hyper-v/25b2974d-80e5-44e6-9e78-6fbd8e3e519f

https://docs.docker.com/engine/install/ubuntu/

https://zhuanlan.zhihu.com/p/53707590

https://blog.csdn.net/foreverhot1019/article/details/102725793

https://blog.csdn.net/weixin_44796670/article/details/115900538

标签:容器,RUN,Python,dev,id,OpenCV,https,Docker,docker
来源: https://www.cnblogs.com/polong/p/16688879.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有