Docker-compose部署Fastapi、postgres、Redis、Nginx
之前有写过使用容器部署的方式,这次尝试使用Docker-compose试一次大胆的尝试
使用容器的方式部署只是掌握这项技能的基础,在使用Docker-compose的过程中会有些稍许的不同。毕竟踩过的坑才算是跨过去的坎。具体会使用到Supervisor、Gunicorn、Postgres等
所有的文件目录结构如下
project/
│
├── construction/
│ ├── gunicorn
│ │ └── gunicorn.conf
│ │ └── gunicorn.py
│
│ ├── nginx
│ │ ├──conf
│ │ │ └──nginx.conf
│ │ └── Dockerfile
│
│ ├── postgres
│ │ ├──data
│
│ │── redis
│ │ ├──data
│ │ ├──conf
│ │ │ └──redis.conf
│ │ └──Dockerfile
│
│ │── superviosr
│ │ └── supervisord.conf
│
│ │── log
│ │ │── gunicorn
│ │ │ └──success.log
│ │ │ └──error.log
│
│ │ │── nginx
│ │ │ └──success.log
│ │ │ └──error.log
│
│ │ │── supervisor
│ │ │ └──supervisor.log
│
│ └── docker-compose.yml
│
│ └──Dockefile
这里有我配置好的可以做一个参考
Docker-compose基础文件搭建
- yml文件: 放在项目的根目录下,名字就叫docker-compose.yml
- Dockerfile文件:放在项目的根目录下,文件名字叫Dockerfile,这个文件是项目的Dockerfile文件
- **log文件夹:**放在项目的根目录下,这里会放入日志文件
- **construction文件夹:**在项目中创建这样一个文件夹,里面会放入一些配置文件
这里重点说下construction文件夹,里面放入的东西比较多,我们先从这个文件夹中的配置文件开始说起。在该文件夹中创建五个文件夹:gunicorn、nginx、postgres、redis、superviosr
Construction文件夹的各种文件创建及说明
gunicorn:在该文件夹下创建两个配置文件gunicorn.py、gunicorn.conf
- gunicorn.py文件
debug = False
daemon = False
bind = '0.0.0.0:8003' # 绑定ip和端口号
backlog = 512 # 监听队列
timeout = 180 # 超时
# worker_class = 'gevent' #使用gevent模式,还可以使用sync 模式,默认的是sync模式
worker_class = 'uvicorn.workers.UvicornWorker'
workers = 2 # 进程数
threads = 4 #指定每个进程开启的线程数
loglevel = 'debug' # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' # 设置gunicorn访问日志格式,错误日志无法设置
chdir = '/project'
accesslog = "/project/log/gunicorn/success.log" # 访问日志文件
errorlog = "/project/log/gunicorn/error.log" # 错误日志文件
- gunicorn.conf配置文件
[program:gunicorn] # 这里的gunicorn就是告诉supervisor我们的应用名称叫做什么
process_name=%(program_name)s
command=gunicorn -c /project/construction/gunicorn/gunicorn.py main:app
# 如果上面的命令不起作用,可以使用下面的
# gunicorn main:app --workers 2 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000
directory=/project
user=root
autostart=true
autorestart=true
nginx文件夹:在该文件夹下创建Doclerfile文件和conf文件夹,在conf文件夹中创建nginx.conf文件
- Nginx的Dockerfile文件
# nginx镜像
FROM nginx
# 镜像作者
LABEL