docker部署flask

docker部署flask项目

准备工作:

一台安装有docker的服务器

这里以flask项目为例子;讲解部署过程

首先我们新建一个目录,在目录下面创建一个flask的hello word代码

栗子:

pip install flask 安装flask

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return """

欢迎来到docker部署环境

这里是修改之后的效果111

"""
if __name__ =="__main__": app.run(debug=True,host="0.0.0.0",port="8001") host="0.0.0.0",#这里使用0.0.0.0不然外面不能访问 port="8001"#这里使用的端口号为8001 根据你自己的需求设置端口号

运行这个文件,在浏览器中访问,看是否能够访问到,如果可以访问,没有问题,当然,这里只是检验代码是否有问题,如果你对代码有足够的信心不检验也是可以的,建议这一步做一些

前面是准备工作,下面docker部署开始了


先贴图 项目结构
docker部署flask_第1张图片

文件说明:

1、FalskApp这是我的文件目录

2、requirements.txt这里放的是我们项目所需的包

3、nginx.conf这是nginx代理

4、entry-point.sh脚本

5、Dockerfile这个非常重要必须这样命名

6、app.ini这是uWSGI的配置文件

7、app这个文件夹下面是flask的项目

现在知道每个文件夹是干什么用的了开始部署吧

各文件夹内容:
Dockerfile
FROM ubuntu:18.04 这是环境 这里必须填

MAINTAINER 创建者名称和邮箱

RUN apt-get update -y && \  
    apt-get install -y python3-pip python3-dev
#将当前文件夹下面的requirements.txt复制到容器中
COPY ./requirements.txt /requirements.txt

WORKDIR /
#安装依赖
RUN pip3 install -r requirements.txt

COPY . /

ENTRYPOINT [ "python3" ]

CMD [ "app/app.py" ]

至此我们的准备工作完成了,下面就是构建docker镜像

执行命令

docker build -t docker-flask:test . 这里的.千万不能丢

执行需要一点时间,如果不报错就说明是可以的;如果报错就根据错误来逐一解决

成功后执行

docker run --name flask_app -v $PWD/app:/app -p port1:port1 docker-flask:0.1
    port1(8000:这个端口是你宿主机的端口,也就是外部访问时的端口,如:外部访问地址192.168.1.6:8000     
    port2(8001:这个端口是容器内部的端口,就是我们flask项目启动的8001端口
成功后访问一下看,使用容器部署时,我们项目代码修改,保存后容器会自动更新代码
requirements.txt
Flask==1.1.2
nginx.conf

user nginx;
worker_processes  4;
pid /run/nginx.pid;

events {
    worker_connections  20000;
}

http {
    include    mime.types;
    sendfile on;
    keepalive_timeout  65;
    gzip off;

    server {
        listen 80;
        access_log off;
        error_log off;

        location / { try_files $uri @flaskApp; }
        location @flaskApp {
            include uwsgi_params;
            uwsgi_pass unix:/run/uwsgiApp.sock;
        }
    }
}

entry-point.sh
#!/bin/bash

if [ ! -f /debug0 ]; then  
  touch /debug0

  while getopts 'hd:' flag; do
    case "${flag}" in
      h)
        echo "options:"
        echo "-h        show brief help"
        echo "-d        debug mode, no nginx or uwsgi, direct start with 'python3 app/app.py'"
        exit 0
        ;;
      d)
        touch /debug1
        ;;
      *)
        break
        ;;
    esac
  done
fi

if [ -e /debug1 ]; then  
  echo "Running app in debug mode!"
  python3 app/app.py
else  
  echo "Running app in production mode!"
  nginx && uwsgi --ini /app.ini
fi
app.ini
[uwsgi]
plugins = /usr/lib/uwsgi/plugins/python3  
chdir = /app  
module = app:app  
uid = nginx  
gid = nginx  
socket = /run/uwsgiApp.sock  
pidfile = /run/.pid  
processes = 4  
threads = 2

app/app.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return """

欢迎来到docker部署环境

这里是修改之后的效果111

"""
if __name__ =="__main__": app.run(debug=True,host="0.0.0.0",port="8001") host="0.0.0.0",#这里使用0.0.0.0不然外面不能访问 port="8001"#这里使用的端口号为8001 根据你自己的需求设置端口号

部署环境

这里是修改之后的效果111

"""

if name ==“main”:
app.run(debug=True,host=“0.0.0.0”,port=“8001”)
host=“0.0.0.0”,#这里使用0.0.0.0不然外面不能访问
port=“8001”#这里使用的端口号为8001 根据你自己的需求设置端口号




你可能感兴趣的:(docker部署flask)