Docker-compose部署Fastapi项目

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 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值