nginx安装在/etc/下,项目映射在docker中的/var/www/下nginx
一、建立docker容器将端口映射出来,将docker外的项目映射到docker中docker
#docker run -it -p 8007:8000 -v /opt/project/datatagservice:/var/www/ --name datatagservicetest harbor.fir.ai/library/dataanalysis bash #8007端口映射到8000,docker容器名:dataservicetest,镜像名:harbor.fir.ai/library/dataanalysis
#按ctrl+P+q或手动输入exit回车退出容器
#退出容器后想在进入容器能够使用:docker exec -it dataservicetest(容器名) bash
二、在flask根目录下建立一个gun_config.py文件,文件内容以下:flask
* coding: utf8 * #import gevent.monkey #import multiprocessing #gevent.monkey.patch_all() # 监听本机的5000端口 bind = '0.0.0.0:9000' #指定gunicorn的端口号 #preload_app = True # 开启进程 workers=4 #workers = multiprocessing.cpu_count() * 2 + 1 # 每一个进程的开启线程 #threads = multiprocessing.cpu_count() * 2 backlog = 2048 timeout = 60*60*10 # 工做模式为gevent # worker_class = "gevent" debug=True # 若是不使用supervisord之类的进程管理工具能够是进程成为守护进程,不然会出问题 daemon = True # 进程名称 proc_name = 'gunicorn.pid' # 进程pid记录文件 pidfile = 'app_pid.log' loglevel = 'logs/debug' logfile = 'logs/gun_debug.log' accesslog = 'logs/gun_access.log' access_log_format = '%(h)s %(t)s %(U)s %(q)s' errorlog = 'logs/gun_error.log'
2.一、在flask根目录下再建立一个restart_gunicorn.sh文件,文件内容以下:bash
#gunicorn -w 4 -b 0.0.0.0:8080 app:app #gunicorn -c gun_config.py app:app #!/bin/bash ps aux|grep gun_config.py|awk '{print $2}'|xargs kill -9 sleep 1.5 ulimit -n 65535 gunicorn -c gun_config.py app:app #切到flask项目根目录下,使用该行命令启动flask项目,也能够使用sh restart_gunicorn.sh进行启动flask项目 ps aux|grep gun_config.py|head -3
三、在建立的docker中下载nginx,对nginx中/etc/nginx/sites-enabled中的配置文件作修改:复制default文件,而后重命名为:dataretrieve_nginx.conf(重命名为.conf便可),清空该配置文件的内容,重写配置内容以下:服务器
server { listen 8000; server_name 192.168.1.xxx; #服务器的ip地址或者域名 access_log /var/www/datatagservice/logs/nginx_access.log; error_log /var/www/datatagservice/logs/nginx_error.log; location / { proxy_pass http://127.0.0.1:9000; # 这里是指向 gunicorn host 的服务地址 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
四、以上三步准备完成便可经过下面的命令进行启动nginx,gunicorn,便可完成对flask项目的启动,并在后台进行稳定运行app
#启动nginx:nginx #启动gunicorn须要将目录切到项目根路径下执行:gunicorn -c gun_config.py app:app或sh restart_gunicorn.sh #若是以上出现问题,能够经过下列命名杀死进程: #杀死nginx进程:pkill nginx #杀死gunicorn进程:pkill gunicorn 若是上述两个命令杀死进程失败能够经过pid杀死进程 #查看nginx进程pid:ps -ef|grep nginx #查看gunicorn进程pid:ps -ef |grep gunicorn #经过查看的pid杀死进程:kill -9 (上述两行命令查看的pid)
以上四步便可完成对flask的部署!如按照以上部署失败,欢迎评论留言,戳博主~工具