使用docker-compose部署fastApi微服务

news/2024/12/16 20:39:24/

制作镜像

准备服务代码man.py

文件夹结构
在这里插入图片描述

import os
from loguru import logger
from fastapi import FastAPI
import uvicornapp = 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

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目录执行下列命令
docker build -t 192.168.93.20/devops/python:deploy_app .

在这里插入图片描述

  • 查看构建的镜像
docker images

在这里插入图片描述

  • 检验镜像是否可用
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/servicedocker ps -al # 查看容器

在这里插入图片描述

docker logs yahoo #查看服务日志,

在这里插入图片描述
在这里插入图片描述
到这里服务起来了,验证了Dockerfile的正确性!

dockercompose_80">使用docker-compose管理服务

version: "3.7"
services:webapp:build:context: .dockerfile: Dockerfilelabels:- "webapp"ports:- "8080:8080"restart: on-failurevolumes:- "/app_logs:/work/logs"
  • 使用docker-compose构建镜像并启动容器服务

在这里插入图片描述

  • 检验容服务是否OK

在这里插入图片描述
在这里插入图片描述
这里就实现了docker-compose发布服务了!


http://www.ppmy.cn/news/1555673.html

相关文章

C++6--析构函数

目录 1.概念 2.特性 1.概念 与构造函数功能相反,析构函数不是完成对对象本身的销毁,局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数,完成对象中资源的清理工作 2.特性 析构函数是特殊的成员函数,其特征如下…

比特币是否会取代美元(以及其他主权货币)

上图是 Olivier Blanchard 宏观经济学第八版的英文版内容。这里用中文解释。 1. 背景与现状: 比特币的规模与美元相比仍然很小: 截至 2018 年 12 月,比特币的总流通量为 1730 万枚,每枚价值 $3,900,总市值约 $670 亿…

Kubernetes之自动化CI/CD简介

在 Kubernetes 环境下,CI/CD 的实现帮助开发团队自动化整个软件生命周期的流程,从代码提交到应用部署和管理。Kubernetes 作为一个容器编排平台,提供了高效的容器管理、部署、扩展等功能,而结合 CI/CD 流程,能够进一步…

Windows安装elasticsearch、Kibana以及IK分词器

一、下载 1.下载elasticsearch 访问官网Download Elasticsearch | Elastic,下载elasticsearch 2.下载 Kibana 访问Download Kibana Free | Get Started Now | Elastic ,下载 Kibana 3. IK分词器下载 访问Gitee 极速下载/elasticsearch-analysis-ik选…

YOLO模型基础学习

1. 分类回归的特征值类型 2. 传统机器学习和深度学习对比 3. yolo目标检测的特征值类型 在yolo中特征值是中心点和宽高 2. yolo模型主干网路分析

升级Ubuntu 24.04 LTS报错“Oh no! Something has gone wrong.”

强烈建议:升级Ubuntu系统之前先配置好SSH远程访问 最近升级Ubuntu系统(18->24),经历了一些惊魂时刻,复盘下来没有重装系统的最得益于SSH访问。 在升级到24.04版本时,一切似乎表现得很正常,…

【Java学习笔记】JUnit

一、为什么需要 JUnit 二、基本介绍 三、实现方法 第一次添加: 在需要测试的方法处输入 Test注解,快捷键AltInsert选择添加版本(常用JUnit5.4) 出现绿色箭头可进行测试和编译

Docker Compose实战三:轻松部署PHP

通过前面的文章(Docker Compose基础语法与MySQL部署),你已经掌握了Docker Compose的基本语法和常用指令,并成功部署了一个MySQL数据库服务器。今天,我们将继续深入探索Docker Compose的强大功能,介绍如何使…