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的部署!如按照以上部署失败,欢迎评论留言,戳博主~

基于docker部署flask+gunicorn+nginx的更多相关文章

  1. 用docker部署flask+gunicorn+nginx

    说来惭愧,写了好几个flask django项目都是在原型阶段直接python app.py 运行的,涉及到部署用nginx和gunicorn 都是让别人帮我部署的,据说好像说很麻烦的样子,我就没自己 ...

  2. CentOS7部署Flask+Gunicorn+Nginx+Supervisor

    1. Git客户端 Win10安装git for windows 1.1 设置Git全局参数 打开Git Bash $ git config --global user.name "Alic ...

  3. Centeos7部署Flask+Gunicorn+nginx

    一.环境安装 pip3 install flask pip3 install gunicorn pip3 install nginx 二.模块介绍 1.Flask是一个使用 Python 编写的轻量级 ...

  4. 基于flask+gunicorn+nginx来部署web App

    基于flask+gunicorn&&nginx来部署web App WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务 ...

  5. 初次部署django+gunicorn+nginx

    初次部署django+gunicorn+nginx  博客详细地址  https://www.cnblogs.com/nanrou/p/7026802.html 写在前面,这只是我所遇到的情况,如果有 ...

  6. 基于Docker部署nodejs应用

    基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...

  7. 基于Docker部署ETCD集群

    基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...

  8. 【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署

    本项目实现的是类似于ins的图片分享网站.继续(一),当nginx的配置已修改好后,要在远程服务器上部署网站,只需要几个步骤: 1 前期准备 2 将运行网站的代码从github上下载过来 3 下载依赖 ...

  9. 阿里云部署 Flask + WSGI + Nginx 详解

    抵不住朋友的诱惑,今天终于入手了一台阿里云服务器,是Ubuntu 1.4 32位版本,最初考虑是用来尝尝鲜只是买了个最低配的,价格算起来与在国外买个空间的价格相当吧(可能一年才贵100多),但用起来感 ...

随机推荐

  1. WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)对象绑定

    原文:WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)对象绑定 WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件) 上面的 ...

  2. Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) C. Messy 构造

    C. Messy You are fed up with your messy room, so you decided to clean it up. Your room is a bracket ...

  3. PHP面试常考之设计模式——建造者模式

    建造者模式 介绍 建造者模式又名生成器模式,是一种对象构建模式.它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象. 建造者模式是一步一步创建 ...

  4. 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 4

    23.2.3  在程序中访问接口 本节再优化userapi.php文件中的代码,并多加一个接口函数store(), 模拟一个表单,通过POST提交数据给它,验证并将数据添加到数据库中,代码如下所示: ...

  5. Java设计模式:Abstract Factory(抽象工厂)模式

    概念定义 抽象工厂(Abstract Factory)模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 抽象工厂模式中,系统的产品有多于一个的产品族(一个产品族里定义多个产品) ...

  6. 搭建Jupyter学习环境

    `python notebook`是一个基于浏览器的python数据分析工具,使用起来非常方便,具有极强的交互方式和富文本的展示效果.jupyter是它的升级版,它的安装也非常方便,一般`Anacon ...

  7. 遍历json数据的几种方式

    json(JavaScript Object Notation),json是一种多用于存储和交换文本信息的语法.他能够进行数据的传输,通常和ajax一起使用.它具有体积小.速度快,易解析等诸多优点. ...

  8. 链表中删除倒数第K个节点

    问题描述 分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点. 问题分析与解决 从问题当中,我们只能得到一个链表和要删除的第K个节点的信息,于是就有以下思路:如 ...

  9. struts2增删改查

    1.导入相关的依赖:struts.自定义标签库 配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xm ...

  10. for与foreach区别

    首先说一下for循环: 格式:for( ; ; ){}; public static void main(String[] args) { List<String> arr = new A ...