分享好友 最新动态首页 最新动态分类 切换频道
docker 简单交付web项目
2024-12-27 05:22

运行的软件越来越复杂,环境配置问题所造成的麻烦层出不穷……为了解决这些问题,Docker无疑在这一方向上迈出了具有革新意义的一步。在一台服务器上同时运行一千个Docker容器,这已经成为现实。源自《Docker技术入门与实战》。

docker 简单交付web项目

本文章不对docker的原理和使用做深入介绍,只介绍如何操作把一个web项目打包成一个docker镜像交付,如何服务和依赖的太多,我建议把他们拆分开一个个的docker容器,用docker-compose来处理。

我的项目是用python3.6.5写的,使用了 tornado 异步框架,celery 任务队列(rabbitmq做broker_url,redis做result_backend,redis做缓存,mysql持久化,用supervisor管理进程。还使用了其他的依赖,比如处理音频的librosa,ai常用的torch,opencv, numpy, dlib等等。

特别提醒:对于需要cuda和cudnn的支持,此处推荐使用现成的nvidia的docker镜像来处理

 

下面是几个对你有帮助的网址,部分可能需要科学上网:

https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md https://gitlab.com/nvidia/container-images/cuda

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html

 

注意:需先安装 nvidia-container-toolkit,并重启docker服务!否则会报错

拉取docker镜像,使用下面类似的命令,以自己情况而定:

docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04

然后使用该镜像启动一个容器,进入容器后先测试2个命令,nvidia-smi和nvcc -V是否可以使用,可以使用后再继续

 

启动容器命令,类似下面

docker run --gpus all -it --name mycuda -v /data:/data nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 /bin/bash

注意加上 --gpus all,对于要使用声卡的还要加上 --device /dev/snd

在容器里,然后继续你的web服务部署,就像在虚拟机里操作一样。可以写个脚本!比如类似以下步骤:

1. 更换镜像源

2. 修改pip源

3. 安装系统的各个依赖库,比如: gcc,cmake, openssl, zlib, wget等等

4. 安装编译python, redis,nginx,rabbitmq, mysql,supervisor等

5. 写入nginx配置,supervisor配置文件, 配置数据库账号密码权限,数据库初始化等。

6. 安装requirements.txt里的库

7. python代码需要编译成.so文件,用来保护代码和加速运行效率。

8. supervisor启动服务,测试是否正确。

测试正常后,有个问题:启动docker时,自动启动各个服务

我是写一个启动脚本start.sh放在容器内,这个脚本做什么事情

至少需要做三件事

1. 设置所需要的环境变量

2. 以后台方式启动服务,比如redis,mysql,nginx,rabbitmq,web服务等

3. 执行bash: /bin/bash

然后还需要做几个事情:

 

1. 把容器保存成镜像,类似以下命令:

docker commit -a "Wind" -m "web server" -p 容器id webserver:v1

执行完后,使用docker images可以看到一个镜像名为webserver,tag为v1的镜像。

 

2. 把镜像导出成文件 web_server_v1.tar,类似以下命令:

docker save -o web_server_v1.tar webserver:v1

 

导出的镜像怎么使用呢

docker load < web_server_v1.tar

执行完后,使用docker images可以看到一个镜像名为webserver,tag为v1的镜像。

 

运行容器检测,比如start.sh放在容器的/var/www下:

docker run --gpus all --device /dev/snd -it -p 443:443 -d -v /data:/data --name server webserver:v1 /var/www/start.sh

 

进入后查看,redis,nginx,mysql,web服务等都已经启动了。

-p 是把宿主机的端口443映射到容器的443端口

-d 是后台运行容器

-v 是把宿主机的目录挂载到容器

 

自此,web项目交付ok。有不对的地方欢迎交流

最新文章
聚合物水泥基防水涂料,从原理到实践的详细指南
在建筑工程中,防水是一个极为关键的环节,特别是地下室的防水问题。地下室底板和墙板的防水,都有各自的讲究,今天咱就来详细唠唠这事儿。先说说地下室底板吧。高聚物改性沥青防水卷材,它材料本身的防水性能杠杠的,价格也比较实惠。可你
农田小气候气象站设备—监测农田环境中的气象参数
型号推荐:TH-NQ10,云境天合,品质保障,1-5-6-6-6-8-8-7-3-9-6】农田小气候气象站设备是用于监测农田环境中的气象参数的设备,能够实时监测农田的空气温度、空气湿度、土壤水分、土壤温度、风速、风向、雨量、光照强度等常规气象要素。通
新站如何让百度收录?
1、和Google一样,可以与优秀的网站首页交换链接。采用在百度中搜索某个关键词,排在前几名的,有收录日期的网站便是百度认为优秀的网站(当然也可以在非首页处交换链接,速度也算比较快)。  2、提
迈向福祉型人工智能:指导原则与行动路线图
12月3日,卡耐基国际和平基金会主席Mariano-Florentino Cuéllar、谷歌首席科学家Jeff Dean、知名计算机科学家David Patterson等人撰写的长篇报告“Shaping AI’s Impact on Billions of Lives”发布,报告探讨了利用人工智能增进大众福祉
手游排行榜大全 最受欢迎的手游合集2024
想必大家空闲的时候总会玩游戏打发时间,小编也不例外平常喜欢玩一些手游。所以今天盘点了手游排行榜大全供大家参考,这些游戏的类型都是十分丰富的,给喜欢玩游戏的小伙伴们提供一个参考,下面就来看看有哪些游戏吧。1、《时空猎人3》在这
百度SEO攻略,揭秘企业网站搜索引擎制胜之道
百度推广SEO,揭秘高效策略助您企业网站在搜索引擎中独树一帜。通过优化关键词、提升网站内容质量、构建良好链接和提升用户体验,实现网站流量倍增,提高品牌知名度,让您的企业在线上竞争中领先一步。百度推广:精准定位,迅速提升品牌知
项目常用函数封装总结
注意这里用fs的话,只能检测项目部署的那台电脑(即,项目部署到那台电脑,检测那台电脑) 下面介绍了第三个,其他的自行百度,很简单的 BroadCast ChannelService WorkerLocalStorage + storageopen +
软媒酷点桌面
  黄海之滨,黄河之南,软媒坐落于国内宜居的城市——青岛,是一家有着地道“纯血统”的科技公司,软媒之本意即软+媒,公司主营业务就是软件和互联网媒体平台。软媒始于2006年9月,从早期的Vista优化大师+Vista之家发展到Win7优化大师+Wi
第4章生产理论PPT课件
《第4章生产理论PPT课件》由会员分享,可在线阅读,更多相关《第4章生产理论PPT课件(47页珍藏版)》请在装配图网上搜索。1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,制作者:张昌廷(河北经贸
OPPO R11s手机root_kernelSU完美root教程
目前root主流依赖是magisk授权,但今天给大家介绍一个全新的root方式kernelSU,KernelSU是一款安卓设备的Root应用,因其工作在内核模式,可直接接入内核空间中,为用户应用程序授予root权限。可实现相较于magisk软件更完美的隐藏效果,轻松
相关文章
推荐文章
发表评论
0评