本文环境:
- Linux 发行版:Ubuntu Focal 20.04.3 (LTS)
- Linux 内核:Linux 5.4.0-90-generic
- Docker 版本:20.10.11, build dea9396
- MYSQL:5.7.36
- Python:3.7.9
- Flask:2.0.2
- Gunicorn:20.1.0
- Nginx:1.21.4
搭建 Linux 环境可参考:
部署前提
已启动数据库。本文数据库使用 mysql 5.7,数据库 IP 地址为 192.168.1.11 。
登录 mysql 创建测试数据库及用户:
-- 创建应用数据库
mysql> CREATE DATABASE demo;
-- 创建数据库用户
mysql> CREATE USER 'demouser'@'%' IDENTIFIED BY 'demo123';
-- 授权
mysql> GRANT ALL PRIVILEGES ON demo.* TO 'demouser'@'%';
创建测试项目
目录结构
└── flask_project
├── docker-compose.yml
├── flaskapp
│ ├── app.py
│ ├── config.py
│ ├── Dockerfile
│ ├── gunicorn.config.py
│ └── requirements.txt
├── mysql
│ └── test.env
└── nginx
├── Dockerfile
└── nginx.conf
./flaskapp/app.py
import os
from datetime import datetime
from flask import Flask, jsonify
from flask_sqlalchemy import SQLAlchemy
import config
# 实例化一个web应用
app = Flask(__name__)
app.config.from_object(config)
# 初始化一个数据库连接对象
db = SQLAlchemy(app)
# 测试数据库连接
# 建表
class User(db.Model):
__tablename__ = 'user'
uid = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(50), nullable=False, unique=True)
update_time = db.Column(db