使用 docker-compose 完整的运行一个 flask 应用(nginx+gunicorn+flask+mysql+redis)

镜像的准备

1.docker-compose中的两个要素:

  1. 服务(service) 一个个应用容器实例,比如订单微服务,库存微服务,mysql容器,nginx容器或者redis容器
  2. 工程(project)由一组广联的应用容器组成的业务单元,在docker-compose.yml文件中定义

docker-compose 使用的三个步骤:

  1. 编写Dockerfile定义各个服务应用,并构建出对应的镜像文件
  2. 使用docker-compose.yml来定义一个完整的业务单元,安排好整体应用中的各个容器服务
  3. 最后执行docker-compose up命令来启动并运行整个应用,完成一件部署上线

2.项目整体的目录结构图

│
├─flask_server
│  ├─app
│  │  ├─compose
│  │  │  ├─gunicorn
│  │  │  ├─mysql
│  │  │  │  ├─conf
│  │  │  │  │  └─my.cnf
│  │  │  │  ├─data
│  │  │  │  ├─init
│  │  │  │  ├─logs
│  │  │  │  └─mysql-files
│  │  │  ├─nginx
│  │  │  │  ├─nginx.conf
│  │  │  │  ├─conf
│  │  │  │  ├─html
│  │  │  │  │  └─index.html
│  │  │  │  └─logs
│  │  │  └─redis
│  │  │      ├─redis.conf
│  │  │      └─data
│  │  └─server
│  │      └─__init__.py
│  ├─.env
│  ├─docker-compose.yml
│  ├─Dockerfile
│  ├─gunicorn_config.py
│  ├─requirements.txt
│  └─wsgi.py

flask_sever为整个后端项目的目录,具体的信息为:

  1. /app/compose 该目录里面包含了运行容器要挂在在宿主机上面的数据卷
  2. /app/server 整个flask应用的代码包
  3. .env 环境变量配置文件,供docker-compose和flask应用来使用
  4. docker-compose.yml docker-compose的配置文件
  5. Dockerfile 要生成flask应用镜像的Dockerfile文件
  6. gunicorn_config.py gunicorn服务的启动配置文件
  7. requirements.txt flask应用要安装的依赖包
  8. app.py flask应用的入口文件,供gunicorn服务器调用(Gunicorn服务器和flask应用在同一个容器中

3. nginx,mysql,redis镜像的准备

直接从dockerhub镜像仓库拉取对应的镜像

docker pull nginx
docker pull mysql
docker pull redis

4.Flask应用镜像的准备

Gunicorn华为Flask应用代码都在一个容器内,由Gunicorn这个高性能的Python WSGI服务器来跑Flask应用.
直接从 dockerhub 镜像仓库拉取对应的镜像
Gunicorn 和 Flask 应用代码都在一个容器内,由 Gunicorn 这个高性能的 Python WSGI 服务器来跑 Flask 应用。

更多推荐