使用docker-compose部署fastApi微服务

制作镜像

准备服务代码man.py

文件夹结构

python 复制代码
import os
from loguru import logger
from fastapi import FastAPI
import uvicorn

app = FastAPI()
# 定义日志输出目录
log_directory = os.getenv("LOG", "/work/logs/")
os.makedirs(log_directory, exist_ok=True)
logger.add(os.path.join(log_directory, "app_{time}.log"), rotation="100 MB", retention="10 days")

@app.get("/test")
async def read_root(msg):
    logger.info(msg)
    return {"message": "Hello, World! you input {}".format(msg)}
 
def main():
    uvicorn.run("main:app", reload=True, host="0.0.0.0", port=8080)
    
if __name__ == "__main__":
    main()

生成项目的requirements.txt

  1. 安装pipreqs模块
  2. 使用pipreqs生成项目的 requirements.txt
  3. pipreqs ./ --encoding=utf-8

编辑Dockerfile

bash 复制代码
FROM 192.168.93.20/devops/python:3.9.21-slim-bullseye
LABEL tag="app-depoly"
WORKDIR /work
ENV LOG=./logs
COPY ./service/* ./service/code
RUN pip install --upgrade pip && pip install -r ./service/code/requirements.txt
CMD python3 ./service/code/main.py

构建容器

  • 在Dockerfile目录执行下列命令
bash 复制代码
docker build -t 192.168.93.20/devops/python:deploy_app .
  • 查看构建的镜像
bash 复制代码
docker images
  • 检验镜像是否可用
bash 复制代码
docker run -itd -p 8080:8080 -v /app_logs:/work/logs --name yahoo  192.168.93.20/devops/python:deploy_app # 创建一个容器并将容器的8080端口暴露到宿主机8080端口,挂载一个宿主机共享目录/container_data到/work/service
 
docker ps -al # 查看容器
bash 复制代码
docker logs yahoo #查看服务日志,


到这里服务起来了,验证了Dockerfile的正确性!

使用docker-compose管理服务

  • 编辑docker-compose.yml
bash 复制代码
version: "3.7"
services:
  webapp:
    build:
      context: .
      dockerfile: Dockerfile
      labels:
        - "webapp"
       
    ports:
      - "8080:8080"
    
    restart: on-failure
    volumes:
      - "/app_logs:/work/logs"
  • 使用docker-compose构建镜像并启动容器服务
  • 检验容服务是否OK


这里就实现了docker-compose发布服务了!

相关推荐
“码”力全开1 天前
【架构深探】基于Docker与GB28181/RTSP的边缘计算AI视频管理平台:异构算力调度与源码交付实践
人工智能·docker·架构
qq7590353661 天前
2026 docker run启动的容器通过命令导出为docker-composer.yml文件
docker·eureka·composer
极客先躯1 天前
高级java每日一道面试题-2026年02月03日-实战篇[Docker]-如何备份和恢复 Docker Volume?
运维·docker·容器·自动化·备份·持久化·恢复
“码”力全开1 天前
基于 Docker 与边缘计算的 AI 视频管理平台:打破 GB28181/RTSP 协议壁垒与源码交付架构解析
人工智能·docker·边缘计算
江湖有缘1 天前
自建私有任务管理平台|Docker Compose部署Ticky完整教程
运维·docker·容器
ai产品老杨1 天前
破局多路异构计算:基于 Docker 容器化与 GB28181/RTSP 统一接入的 AI 边缘计算视频管理平台架构解析
人工智能·docker·边缘计算
梦想的颜色1 天前
Docker 知识全貌:一份体系化的知识结构报告
docker·云原生·容器·eureka
俊俊谢1 天前
【python】FastAPI 实时推送:从 SSE 到 WebSocket
python·websocket·fastapi
“码”力全开1 天前
架构师视角的自研流媒体中台:基于 Docker、GB28181 与 RTSP 的边缘计算 AI 平台,源码交付赋能二次开发
人工智能·docker·边缘计算
杨浦老苏1 天前
家庭实验室监控仪表盘HomeLab-Monitor
运维·docker·监控·群晖