基於docker部署flask+gunicorn+nginx


nginx安裝在/etc/下,項目映射在docker中的/var/www/下

1、創建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

2、在flask根目錄下創建一個gun_config.py文件,文件內容如下:

 ­*­ coding: utf­8 ­*­
#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.1、在flask根目錄下再創建一個restart_gunicorn.sh文件,文件內容如下:

#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

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;
}
}

4、以上三步准備完成即可通過下面的命令進行啟動nginx,gunicorn,即可完成對flask項目的啟動,並在后台進行穩定運行

#啟動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的部署!如按照以上部署失敗,歡迎評論留言,戳博主~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM