docker部署自己的fastapi项目

项目目录:
在这里插入图片描述

推荐demo 二

demo 一

初始镜像ubuntu18.04 配置环境比较麻烦,构建成功率较低。

# fastapi 1.0

# Base images 基础镜像
FROM ubuntu:18.04

#MAINTAINER 维护者信息
MAINTAINER huhu 

# 设置语言 必须设置,否则下载某些python依赖包报错
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8
ENV LC_ALL C.UTF-8

#更换ubuntu 的源
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak
ADD ./sources.list /etc/apt/

#下载相关工具及服务, -y 是自动回复交互式输入[y/n] 确定
RUN apt-get update \
	&& apt-get install -y vim supervisor python3.8 python3-distutils \
    && apt-get install -y python3-pip \
    && pip3 install --upgrade pip

#指定工作目录,若无,则自动创建
WORKDIR /root/app

COPY . .

RUN pip3 install -r requirements.txt

#EXPOSE 映射端口
EXPOSE 9000 9001

# 运行服务
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "9000", "--reload", "--log-level", "info"]

demo 二

先到docker容器里面找需要的python镜像
在这里插入图片描述
在这里插入图片描述
项目需要python3.9 挑选了一个docker pull python:3.9.7-bullseye
直接在自己的项目目录下直接build

# fastapi 1.0

# Base images 基础镜像
FROM python:3.9.7-bullseye

#MAINTAINER 维护者信息
MAINTAINER huhu

# 设置语言
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8
ENV LC_ALL C.UTF-8

#指定工作目录,若无,则自动创建
WORKDIR /root/app

COPY . .

RUN pip install -r requirements.txt

#EXPOSE 映射端口
EXPOSE 9000 9001

# 运行服务
#CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "9000", "--reload", "--log-level", "info"]
CMD ["gunicorn", "-c", "gunicorn.conf.py", "main:app"]

tips:

  • 直接选择的python镜像,pip是安装好的,直接pip就行,若构建是失败再重新执行一次,若多次不成功,尝试upgrade一下pip,继续失败,可尝试更新pip源使用国内的。
进入项目目录下执行
build 命令
   docker build -t 镜像名:1.0 .
镜像创建成功后,启动容器

 - docker run -itd -u root -p 8867:9000 -v `pwd`:/root/app --name=容器名 镜像ID

3. 在服务器部署fastapi 命令行启动命令
第一种使用方式

uvicorn main:app --host '0.0.0.0' --port 9000 --reload

第二种使用方式(推荐)
Gunicorn是一个成熟的、功能齐全的服务器和流程管理器。
Uvicorn包含一个Gunicorn worker类,允许您运行ASGI应用程序,具有Uvicorn的所有性能优势,同时还为您提供了Gunicorn的全功能流程管理。
这允许您动态地增加或减少工作进程的数量,正常地重新启动工作进程,或者在不停机的情况下执行服务器升级。
对于生产部署,我们建议将gunicorn与uvicorn worker类一起使用。

gunicorn main:app -b 0.0.0.0:9000 -w 1 -k uvicorn.workers.UvicornWorker

推荐文章

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值