问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

使用Docker Swarm和Traefik部署FastAPI全栈应用

创作时间:
作者:
@小白创作中心

使用Docker Swarm和Traefik部署FastAPI全栈应用

引用
1
来源
1.
https://www.restack.io/p/fastapi-answer-full-stack-template

FastAPI是一个现代、快速(高性能)的Web框架,用于构建API,基于Python 3.7+标准类型提示。Docker Swarm是Docker原生的集群管理工具,可以轻松地在一组机器上部署和管理Docker容器。本文将介绍如何使用Docker Swarm和Traefik反向代理来部署一个完整的FastAPI应用。

使用Docker Swarm和Traefik部署全栈应用

设置Docker Swarm集群

  1. 初始化Docker Swarm:首先在服务器上初始化Docker Swarm。可以通过运行以下命令:

    docker swarm init
    

    这个命令会将当前机器设置为管理节点。

  2. 添加工作节点:如果你计划扩展应用,可以向集群中添加工作节点。使用docker swarm init命令输出的token来加入额外的机器。

  3. 安装Traefik:Traefik作为反向代理和负载均衡器。你可以在Docker Swarm中部署Traefik,通过创建一个docker-compose.yml文件:

    version: '3.7'
    services:
      traefik:
        image: traefik:v2.5
        command:
    
  • --api.insecure=true
  • --providers.docker=true
  • --entrypoints.web.address=:80
  • --entrypoints.websecure.address=:443
    ports:
  • "80:80"
  • "443:443"
    volumes:
  • /var/run/docker.sock:/var/run/docker.sock
    
    使用以下命令部署Traefik:
    
    docker stack deploy -c docker-compose.yml traefik
    
    

部署FastAPI应用

  1. 生成FastAPI项目:使用FastAPI项目生成器创建一个新的项目。这大约需要2分钟。生成的项目将包含所有必要的配置,以与Docker Swarm和Traefik集成。

  2. Docker化FastAPI应用:在FastAPI项目目录中创建一个Dockerfile

    FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
    COPY ./app /app
    WORKDIR /app
    RUN pip install -r requirements.txt
    CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
    

    这个Dockerfile将设置你的FastAPI应用在容器中运行。

  3. 部署应用:创建一个docker-compose.yml文件用于你的FastAPI应用:

    version: '3.7'
    services:
      fastapi:
        image: yourusername/yourfastapiapp
        deploy:
          replicas: 3
        labels:
    
  • "traefik.enable=true"
  • "traefik.http.routers.fastapi.rule=Host(yourdomain.com)"
  • "traefik.http.services.fastapi.loadbalancer.server.port=80"
    
    使用以下命令部署你的FastAPI应用:
    
    docker stack deploy -c docker-compose.yml fastapi
    
    

使用Traefik管理HTTPS

Traefik会自动为你应用管理HTTPS证书。确保你的域名正确指向服务器的IP地址。Traefik将无缝处理SSL证书的获取和续期。

通过以上步骤,你可以成功使用Docker Swarm和Traefik部署一个FastAPI全栈应用,确保了一个健壮且可扩展的架构。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号