Docker+gunicorn+flask+adb环境搭建

1.准备配置文件

Dockerfile:

FROM python:3.8
MAINTAINER cq-safone
LABEL version="3.0" describe='yk'
WORKDIR /cq-safone/smart-home
COPY requirements.txt ./
RUN pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN apt-get update -y && apt-get install
RUN apt-get install android-tools-adb -y
RUN apt-get install default-jre -y
RUN apt-get install default-jdk -y
RUN adb devices
COPY . .
ENV LANG C.UTF-8
CMD ["gunicorn", "main:app", "-c", "./gunicorn.conf.py"]

gunicorn.conf.py

# gunicorn配置
import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
import multiprocessing

bind = '0.0.0.0:1236'  # 绑定ip和端口号
backlog = 512  # 监听队列
timeout = 30  # 超时
worker_class = 'gevent'  # 使用gevent模式,还可以使用sync 模式,默认的是sync模式
workers = multiprocessing.cpu_count() * 2 + 1  # 进程数
threads = 2  # 指定每个进程开启的线程数
loglevel = 'info'  # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'  # 设置gunicorn访问日志格式,错误日志无法设置
accesslog = "./log/gunicorn_access.log"  # 访问日志文件
errorlog = "./log/gunicorn_error.log"  # 错误日志文件

requirements.txt

PyYAML
uiautomator2
Flask
PyMySQL
gunicorn
gevent
numpy
pandas
greenlet
eventlet

main.py

from flask import Flask, jsonify

app = Flask(__name__)


@app.route('/', methods=['POST', 'GET'])
def aa():
    print('hello world!!')
    return jsonify(code='200')


if __name__ == '__main__':
    app.run()

当前目录有如下几个文件

在这里插入图片描述

[root@VM-0-2-centos a]# docker --version  # docker版本
Docker version 20.10.21, build baeda1f

2. 制作docker images

sudo docker build -t smarthome:4.0 .

在这里插入图片描述

3. 创建镜像

sudo docker run -it --name=smart -p 1236:1236 --privileged=true -v /dev/bus/usb:/dev/bus/usb -v /root/a/log:/cq-safone/smart-home/log smarthome:4.0

# --name 是给你创建的容器起一个名字,在后续进行容器操作的时候可以直接使用名字,而不是使用id
# -p 讲寄主机的端口映射到容器中,前一个是本机的端口,后一个是容器的端口
# -v 目录挂载,冒号前一个是本机的路径,后面是容器中的路径

# 在创建容器的过程中可能会卡着。这时候就需要结束容器,然后在重新启动
# ctrl+c 结束容器

# 重新启动容器
sudo docker start smart

# 在本机中检测镜像是否创建成功

ll log/
# 你会发现多了两个日志文件

# 查看本机是否有docker容器的端口
sudo netstat -anpt|grep 1236

在这里插入图片描述

  • 查看容器内的adb命令是否可用
    • sudo docker exec -it smart adb devices
  • 进入容器
    • sudo docker exec -it smart bash
  • 寄主机文件复制到容器中
    - sudo docker stop smart
    - sudo docker cp 主机路径 smart:容器路径

由于该服务器没有adb设备,所以使用adb devices 没办法查看到设备列表,还有值得注意的是寄主机也需要安装adb和Java环境。

猜你喜欢

转载自blog.csdn.net/weixin_45908488/article/details/127812851
今日推荐