Movatterモバイル変換


[0]ホーム

URL:


docker、flask、gunicorn、flask-script、nginx部署实践

最新推荐文章于 2024-09-28 20:19:14 发布
原创最新推荐文章于 2024-09-28 20:19:14 发布·2.2k 阅读
· 0
· 1·
CC 4.0 BY-SA版权
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
文章标签:

#flask#docker#nginx

本文详述了如何使用gunicorn、Dockerfile和docker-compose逐步部署Flask应用。首先,通过gunicorn在本地启动Flask应用,接着编写Dockerfile以独立容器运行,最后利用docker-compose进行服务编排,实现一键启动,包括Flask应用、MySQL和Nginx服务。

docker和docker-compose部署flask(flask-script)、gunicorn实践记录

这里不介绍docker和docker-compose的工作原理,只真实的记录本次实践。

循序渐进的来,先用gunicorn启动,再用Dockerfile启动,最后尝试docker-compose编排

1.准备项目目录和模拟代码,先本地用gunicorn启动
  1. ~/flask-demo 目录,创建好虚拟环境,flask启动文件,我这里用了flask-script的方式
# ~/flask-demo/manage.pyfrom flaskimport Flaskfrom flask-scriptimport Managerapp= Flask(__name__)manager= Manager(app)@app.route("/")defindex():return"hello world"if __name__=="__main__":    manager.run()
  1. gunicorn配置文件,这里其他很多教学是文件名以conf结尾,我这里这样写会报错,建议写成一个py文件的形式
# ~/flask-demo/gun_cfg.py    都是字面意思worker=4# 进程数thread=2# 每个进程的线程数bind="0.0.0.0:8897"# 监听地址端口worker_class="gevent"# 工作模式 协程worker_connection=2000# 设置最大连接数pidfile="gunicorn.pid"# 设置进程文件目录accesslog="logs/access.log"errorlog="logs/error.log"loglevel="info"reload=True# 自动重新加载debug=True
  1. gunicorn 启动命令
gunicorn -c ./gun_cfg.py manage:app
2. 用Dockerfile启动项目
  1. 编写Dockerfile文件

    # 指定基础环境FROM python:3.7# 指定个人信息 可有可无MAINTAINER  username<email># 安装项目依赖COPY requirements.txt ./# 拷贝当前目录下的req文件到容器的当前目录下RUN pip3install --no-cache-dir -i https://pypi.douban.com/simple -r requirements.txt# 拷贝项目代码到容器的当前路径下COPY..# 运行项目CMD gunicorn -c ./gun_cfg.py manage:app
  2. 生成镜像

    # -t 指定镜像名称  . 指在当前目录寻找可执行的Dockerfile文件docker build -t flask-test.
  3. 用flask-test镜像启动容器

    # -itd 交互和守护模式启动 --name 指定容器名docker run -itd --name:test -p8000:8897 flask-test
尝试使用docker-compose编排启动项目,真正实现一键启动
  1. 结构目录有所改变,为了更好的适应实际的项目开发的情况

    |—— flask-demo||—— docker||—— app||—— Dockerfile||—— requirements.txt||—— nginx||—— Dockerfile||—— nginx.conf||—— mysql||—— Dockerfile||—— init.sql||—— docker-compose.yml||—— src||—— app||—— handler||—— model||——...||—— config.py||—— manage.py||—— gun_cfg.py
  2. 下面来一步步介绍

    # flask-demo/docker/docker-compose.ymlversion:"3"services:app:build: ./appstdin_open:truetty:trueports:-"8897:8897"container_name:"flask-demo"volumes:-../:/home/root/flask-demo: rwworking_dir: /home/root/flask-demo/src/appdepends_on:- mysqlcommand: gunicorn-c ./gun_cfg.py manage:appmysql:build: ./mysqlports:-"3306:3306"volumes:- ./data/mysql:/var/lib/mysql:rwenvironment:MYSQL_ROOT_PASSWORD:"test123"TZ: Asia/Shanghairestart: alwaysnginx:build: ./nginxports:-"80:80"container_name:"flask-nginx"    volumes:- ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro- ../:/home/root/flask-demo:rwdepends_on:- app# flask-demo/docker/app/DockerfileFROM python:3.7COPY requirements.txt ./RUN pip3 install--no-cache-dir-i https://pypi.douban.com/simple/-r requirements.txt# flask-demo/docker/nginx/DockerfileFROM nginx:1.9.9COPY ./nginx.conf /etc/nginx/nginx.conf# flask-demo/docker/mysql/DockerfileFROM mysql:5.6COPY ./init.sql /docker-entrypoint-initdb.d
  3. 启动

    docker-compose up -d
确定要放弃本次机会?
福利倒计时
::

立减 ¥

普通VIP年卡可用
立即使用
1 条评论您还未登录,请先登录后发表或查看评论

博客等级

码龄7年
32
原创
22
点赞
83
收藏
10
粉丝
关注
私信

热门文章

分类专栏

展开全部收起

上一篇:
记录一次pipenv虚拟环境实践

大家在看

最新文章

目录

展开全部

收起

目录

展开全部

收起

上一篇:
记录一次pipenv虚拟环境实践

目录

评论 1
被折叠的  条评论为什么被折叠?到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

[8]ページ先頭

©2009-2025 Movatter.jp