Mac下部署Flask项目

1、搭建合理的项目架构

防止产生循环导入

例如这样,一个最基础的架构示例
然后配置日志等等

/
├── application/            # 项目主要逻辑代码保存目录
|    ├── apps               # 存放蓝图
|    ├── settings/          # 项目配置存储目录
│    │   ├ dev.py           # 开发阶段的配置文件
│    │   ├ prop.py          # 生产阶段的配置文件
|    ├──templates           # 模版
│    ├── __init__.py        # 项目初始化文件
├── manage.py               # 项目的终端管理脚本文件
├──logs/                    # 存放日志文件
├──docs/                    # 存放文档文

2、编写dockerfile

a、首先需要准备好项目的依赖文件 requirements.txt

b、编写gunicorn.py

from gevent import monkey
import multiprocessing

monkey.patch_all()

bind = "0.0.0.0:你的端口"

workers = multiprocessing.cpu_count()
worker_class = 'gevent'

c、编写Dockerfile


FROM ichpan/ubuntu-python38:v1

ADD ./ /chronus
WORKDIR /chronus

ENV TZ=Asia/Shanghai
RUN DEBIAN_FRONTEND="noninteractive" apt -y install tzdata
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN pip install -r requirements.txt

EXPOSE 5000

ENTRYPOINT ["gunicorn", "-c", "gunicorn.py", "manage:app"]

d、打包镜像

docker build -t 生成的包名 .

e、启动镜像

docker run -d -p 宿主机端口:容器端口 镜像名

!!!项目搭建完毕

3、项目中有mysql和Redis的时候怎么连接?

使用方案:容器内连接宿主机服务
首先:ifconfig查看本机IP

Mac下部署Flask项目
a、容器内访问redis服务
​ ​ 在项目中修改redis的port、host为上面的port 和host
​​ ​ 关闭redis的保护模式(即会阻挡外部网址访问), 首先打开redis的配置文件redis.conf, 然后找到 protected-mode yes一行将yes改为no,当然如果你本身就是no就不用修改了
​​ ​ 确保redis监听的本地所有地址,而不只是127.0.0.1地址(默认只监听这个地址) . 还是找到redis.conf文件找到绑定地址指令一般为bind 127.0.0.1 :1 , 在这行前将#, 将其注释掉, 那么他会监听本地所有地址.

b、容器内访问mysql

首先我们先看一下MySQL默认指定的my.cnf路径,使用命令

mysql --help|grep 'my.cnf'

c、将编写好的mysql配置文件拷贝到 /etc下,然后修改权限

sudo chmod 664 my.cnf

d、修改权限


use mysql

update user set host='%' where user='root';

然后就可以访问到本地mysql了。

至此项目搭建完毕!!!

Original: https://blog.csdn.net/weixin_45394086/article/details/123661495
Author: 楼下安同学
Title: Mac下部署Flask项目

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/745386/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球