项目介绍

此项目是一个基于ubuntu16.4+python3的flask web项目,使用gunicorn启动,项目运行时需要加载一些动态链接库,并且项目在运行时需要多个后缀为.vpo的授权文件,项目结构如下

../web

├── app # web应用

├── Dockerfile # 用以构建镜像

├── gethid # 生成设备指纹信息,然后根据生成的指纹信息生成授权文件

├── requirements.txt # python依赖库

├── so # 动态链接库文件夹

├── sources.list # ubuntu国内下载源

└── start.sh # 项目启动脚本

项目主要文件说明

DockerFile处理流程

DockerFile

DockerFile代码

FROM ubuntu:16.04

MAINTAINER panso

# 替换apt-get下载源并安装相关依赖库

COPY ./sources.list /etc/apt/sources.list

RUN apt-get update && apt-get install python3.5 -y && apt-get install python3-pip -y && apt-get install vim -y && && apt install tzdata -y

# 修改系统时间

RUN rm /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 安装python依赖库

COPY ./requirements.txt /home/requirements.txt

RUN python3 -m pip install -r /home/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

#拷贝项目到/home/web目录下

COPY . /home/web/

WORKDIR /home/IdPhotoCheckService/

# 配置动态链接库搜索的路径

ENV LD_LIBRARY_PATH="/home/web/so/"

# 给启动脚本执行权限并启动

RUN chmod a+x ./start.sh

CMD "./start.sh"

start.sh 脚本处理流程图

start.sh 脚本处理流程图

start.sh 代码

#! /bin/bash

vpo_array=('m0.vpo' 'm1.vpo')

# 判断vpo是否都存在

for vpo in "${vpo_array[@]}"

do

if [ ! -f "./api_server/$vpo" ];then

# 判断是否存在/home/vpos目录且该目录下是否有该vpo文件,若有就直接拷贝过去,没有则报错

if [ -d "/home/vpos" ];then

if [ -f "/home/vpos/$vpo" ];then

cp /home/vpos/*.vpo ./api_server/

else

cp gethid /home/vpos

cd /home/vpos

chmod a+x gethid

./gethid

printf "项目缺少授权文件文件, 已在/home/vpos目录下生成了设备指纹文件temphk.key,请联系XXX公司\n"

exit

fi

else

printf "项目无/home/vpos目录,导致无法获取vpo文件或生成凭据,请联系相关技术人员获得支持\n"

exit

fi

fi

done

# 授权文件校验通过,即将启动服务器

exec gunicorn app:app -b 0.0.0.0:8024

项目打包成镜像发布

1 构建镜像

docker build -t ubuntu/flask:v1 ./

执行完成后,可以通过如下命令查看构建的镜像

sudo docker images

执行结果

REPOSITORY TAG IMAGE ID CREATED SIZE

ubuntu/flask v1 b8a4929de352 4 minutes ago 1.2GB

ubuntu 16.04 a3551444fc85 10 days ago 119MB

2 导出镜像

sudo docker save [镜像名称]> [打包后的存储路径]

[示例]

sudo docker save ubuntu/flask:v1> /home/docker_images/flask_v1.tar

导入镜像并运行

1 docker镜像导入

docker import 镜像文件路径 镜像的名字及标签

示例

docker import flask_v1.tar ubuntu/flask:v1

2 构建容器

用步骤2导入的镜像创建容器,创建前最好将旧版本的容器停掉,以防止由于端口占用导致的容器启动失败的问题

docker run -d -v $path1:/mnt -v $path2:/home/vpos [-v $path3:/home/logs] -p $port:8024 --name $name $imgae

在如上命令中,以$开头的是需要自定义的数据,其对应的含义如下

参数名

类型

说明

示例

$path1

PATH

储存结果图的文件夹绝对路径,此文件夹下需要有两个目录,分别是upload(存储上传的图片)和result(存储结果图)

/mnt

$path2

PATH

设备授权文件(vpo)所在的文件夹路径.若有此设备对应的vpo文件,则只需放到此目录下即可.

若没有,此文件夹可以为空,容器启动后会在此文件夹内生成设备指纹信息并退出,然后可凭此指纹信息联系我们生成授权文件vpo

/vpos

$path3

PATH

日志文件存储路径,用以存储web服务器的日志文件,可省选项,若为空,则日志将输出至标准输出流中

/logs

$port

INT

暴露出的端口

7001

$name

STRING

容器名称

flask_v1

$imgae

STRING

镜像名称

ubuntu/flask:v1

示例

docker run -d -v /mnt:/mnt -v /home/vpos:/home/vpos -v /home/logs:/home/logs -p 6001:8024 --name flask_v1 ubuntu/flask:v1

查看容器是否正常运行可以通过docker ps 来查看,若容器退出,可以查看其日志输出 dcoker logs -f flask_v1 和

path2对应的文件夹内后,再执行docker start flask_v1即可,若因为其他原因退出可联系技术人员.

4 几个常用的容器命令

docker stop # 停止容器

docker start # 启动容器

docker restart # 重启容器

docker exec -it bash # 进入容器内(容器须处于启动状态)

docker部署python项目_docker部署项目实践相关推荐

  1. docker部署mysql项目_docker部署springboot项目(web + mysql)

    前言 docker目前是非常热门的项目,本文暂不讨论docker集群环境中的部署项目问题. 环境准备 1. docker环境(本文使用centos7下的docker环境) 2. javaWeb项目(s ...

  2. docker 发布tomcat项目_Docker部署java项目[tomcat环境]

    公司的一个java项目,然后这是组长给的一个任务,部署到docker中. 部署更不用说啦,肯定要写Dockerfile,不多想,先下载我需要的环境包. 1. JDK [JDK下载地址](Java SE ...

  3. docker部署mysql项目_Docker部署项目步骤

    SSH连接服务器: 安装Docker: yum -y install docker-io 启动docker service docker start 开机自启 systemctl enable doc ...

  4. centos部署python个人博客项目

    python环境部署,将Django项目部署到linux服务器上,我们部署的linux系统是centos7首先,我们先在linux上搭建我们的Python3环境: 在这里首先强调一下,Centos7系 ...

  5. aws 部署python lambda_awslambda-为Lambda工具部署Python项目。-Philipp Gorczak Getting started Usage...

    作者:Philipp Gorczak ### 作者邮箱:p.gorczak@gmail.com ### 首页:https://github.com/pgorczak/awslambda ### 文档: ...

  6. netcore部署到docker 实现excel生成_Docker部署Redis集群----第七节(docker-redis-sentinel集群实现篇)...

    由于工作时间的问题,今天才给大家分享我们的第七篇章,让大家久等了.... 上一篇章,我们了解到了redis主从复制的哨兵集群,简单的一句话就是,"时时对主节点进行监控,一旦发现多个从节点都无 ...

  7. docker nginx部署web应用_docker部署Nginx

    1.拉取Nginx进行 docker pull nginx:latest拉取完成查看:docker images 2.准备工作 先在主机创建工作文件夹,为了挂载配置和静态文件的访问使用 #启动一个容器 ...

  8. docker pip 换源_Docker 部署 jupyterlab 3.0.3

    之前学习记笔记用的是印象笔记,印象笔记作为笔记本使用还可以,但是记录代码不太方便. 前几天jupyterlab更新了3.0版本,包含本地化支持.可视化调试器.新的目录结构.改进的页面显示等新特性.但是 ...

  9. docker添加jar包_Docker部署jar包

    开启Docker远程访问,执行以下命令 vi /lib/systemd/system/docker.service #修改[Service]下第五行ExecStart ExecStart=/usr/b ...

最新文章

  1. android ValueAnimator学习
  2. 【分布式事务】面试官问我:MySQL中的XA事务崩溃了如何恢复??
  3. logstsh xpack 认证_ElasticSearch Kibana 和Logstash 安装x-pack记录
  4. 线程常用方法,线程安全和同步锁
  5. 3.顶点外扩方法实现的描边shader
  6. 中小企业上云多地域办公组网,建立高质量云上内网环境
  7. 更改盘符不成功_DVD光驱不读盘怎么解决?DVD光驱能刻录吗
  8. VB模拟指针模块mPoint.bas
  9. java字符如何向float转换_java – 将float转换为字符串分数表示
  10. 九九乘法表(c语言)
  11. ZK UserGuide(一)理解/userguide/index.zul导航原理
  12. 大数据应用于生活,目前主要应用在哪些领域?
  13. Charles 在线破解工具
  14. 计算机设备管理器更新驱动器,怎么利用设备管理器更新显卡驱动 - 驱动管家
  15. Tensorflow-saver模型参数保存及载入
  16. 贷超分销系统的模式!
  17. Laravel接入SDK淘宝客调用
  18. 以下选项中、不是python对文件的打开模式的是_以下选项中,不是Python对文件的打开模式的是...
  19. MATLAB simulink 模型验证学习笔记
  20. 别无分号只此一家,Python3接入支付宝身份认证接口( alipay.user.certify)体系(2021年最新攻略)

热门文章

  1. SQL Sever 2000中的前触发器和后触发器
  2. 华为云应用商城更换包名
  3. 搭建rsync+inotify实时同步
  4. 不同颜色文字拼接显示
  5. Ubuntu 高亮词汇翻译,划线翻译,鼠标选词翻译,点读机
  6. xilinx -- 逻辑单元CLB、Slice、LUT
  7. 网页div转换成图片导出——html2canvas
  8. 这是我看过最详细的股价走势图应用分析!
  9. ArcGIS基础实验操作100例--实验96创建地形剖面图
  10. css flex布局,自适应高度