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
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/
转载文章受原作者版权保护。转载请注明原作者出处!