当前位置:网站首页 >  教程

可一键部署基于Docker Compose的轻量数字经济全域基础技术栈落地指南

时间:2026年06月03日 03:01:25 来源:易频IT社区

前置准备:环境与资源确认

本技术栈覆盖全域数字经济的数据采集、数据存储、数据可视化、轻量API服务4个核心模块,所有工具均为开源免费,单服务器最低配置2核4G、20G SSD即可运行。

环境要求

  • 操作系统:Ubuntu 22.04 LTS/20.04 LTS(推荐,官方技术栈兼容性最高)
  • 提前安装Docker 20.10+、Docker Compose 2.20+

环境安装(Ubuntu系统)

直接复制粘贴以下完整命令行,按回车执行即可自动完成配置:

```bash 更新源索引 sudo apt update 安装必要依赖 sudo apt install ca-certificates curl gnupg lsb-release -y 导入Docker官方GPG密钥 sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 添加Docker稳定版源 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 再次更新源索引并安装Docker全家桶 sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y 配置当前用户免sudo运行Docker(需重新登录服务器生效) sudo usermod -aG docker $USER ```

重新登录服务器后,输入`docker -v`和`docker compose version`验证安装,出现版本号即为成功。

核心模块搭建:一键部署技术栈

本技术栈使用4个经过验证的轻量开源工具:Telegraf(数据采集)、InfluxDB 2.x(时序+键值数据存储)、Grafana(数据可视化)、FastAPI(轻量API服务),全部通过Docker Compose编排,无需手动配置单个容器。

创建部署目录与配置文件

  • 步骤1:创建专用部署目录并进入
```bash mkdir -p ~/digital-economy-stack && cd ~/digital-economy-stack ```
  • 步骤2:创建并编辑docker-compose.yml(可直接复制完整内容)
```bash nano docker-compose.yml ```

粘贴以下完整配置,注意修改第24、25、26行的InfluxDB初始账号密码(密码需至少8位,包含大小写字母+数字)

```yaml version: '3.8' services: 数据存储:InfluxDB 2.x influxdb: image: influxdb:2.7.4 container_name: digital-economy-influxdb restart: always ports: - "8086:8086" volumes: - influxdb-data:/var/lib/influxdb2 - influxdb-config:/etc/influxdb2 environment: - DOCKER_INFLUXDB_INIT_MODE=setup - DOCKER_INFLUXDB_INIT_USERNAME=admin - DOCKER_INFLUXDB_INIT_PASSWORD=Digital123456 - DOCKER_INFLUXDB_INIT_ORG=digital-economy - DOCKER_INFLUXDB_INIT_BUCKET=core-data - DOCKER_INFLUXDB_INIT_RETENTION=30d 数据采集:Telegraf telegraf: image: telegraf:1.28.4 container_name: digital-economy-telegraf restart: always depends_on: - influxdb volumes: - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro 数据可视化:Grafana grafana: image: grafana/grafana:10.2.3 container_name: digital-economy-grafana restart: always ports: - "3000:3000" volumes: - grafana-data:/var/lib/grafana depends_on: - influxdb 轻量API服务:FastAPI fastapi: image: tiangolo/uvicorn-gunicorn-fastapi:python3.11-slim container_name: digital-economy-fastapi restart: always ports: - "8000:80" volumes: - ./app:/app depends_on: - influxdb volumes: influxdb-data: influxdb-config: grafana-data: ```

粘贴完成后按`Ctrl+O`保存,按`Enter`确认文件名,再按`Ctrl+X`退出nano编辑器。

  • 步骤3:创建并编辑telegraf.conf(可直接复制完整内容)
```bash nano telegraf.conf ```

可一键部署基于Docker Compose的轻量数字经济全域基础技术栈落地指南

粘贴以下完整配置,注意第7行的token需要等部署后从InfluxDB获取,先保留占位符

```toml [global_tags] env = "digital-economy-demo" [agent] interval = "10s" round_interval = true metric_batch_size = 1000 metric_buffer_limit = 10000 collection_jitter = "0s" flush_interval = "10s" flush_jitter = "0s" precision = "" hostname = "" omit_hostname = false [[outputs.influxdb_v2]] urls = ["http://influxdb:8086"] token = "INFLUXDB_TOKEN_PLACEHOLDER" organization = "digital-economy" bucket = "core-data" 示例采集模块:服务器基础指标(CPU、内存、磁盘、网络) [[inputs.cpu]] percpu = true totalcpu = true collect_cpu_time = false report_active = false [[inputs.mem]] [[inputs.disk]] ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"] [[inputs.net]] interfaces = ["eth0"] ```
  • 步骤4:创建FastAPI的示例API目录与文件
```bash mkdir -p ~/digital-economy-stack/app && nano ~/digital-economy-stack/app/main.py ```

粘贴以下完整FastAPI代码,实现写入/读取InfluxDB的轻量API:

```python from fastapi import FastAPI from datetime import datetime from influxdb_client import InfluxDBClient, Point, WritePrecision from influxdb_client.client.write_api import SYNCHRONOUS import os app = FastAPI() 配置InfluxDB连接(与docker-compose.yml保持一致) INFLUXDB_URL = "http://influxdb:8086" INFLUXDB_TOKEN = os.getenv("INFLUXDB_TOKEN", "INFLUXDB_TOKEN_PLACEHOLDER") INFLUXDB_ORG = "digital-economy" INFLUXDB_BUCKET = "core-data" 初始化客户端 client = InfluxDBClient(url=INFLUXDB_URL, token=INFLUXDB_TOKEN, org=INFLUXDB_ORG) write_api = client.write_api(write_options=SYNCHRONOUS) query_api = client.query_api() 示例API1:写入模拟数字经济交易数据 @app.post("/write-trade-data") def write_trade_data(merchant_id: str, amount: float, trade_type: str = "online"): point = ( Point("digital_trade") .tag("merchant_id", merchant_id) .tag("trade_type", trade_type) .field("amount", amount) .time(datetime.utcnow(), WritePrecision.NS) ) write_api.write(bucket=INFLUXDB_BUCKET, org=INFLUXDB_ORG, record=point) return {"status": "success", "message": "交易数据写入成功"} 示例API2:查询指定商户近10分钟的交易总额 @app.get("/get-merchant-recent-total") def get_merchant_recent_total(merchant_id: str): query = f'from(bucket: "{INFLUXDB_BUCKET}") |> range(start: -10m) |> filter(fn: (r) => r._measurement == "digital_trade" and r.merchant_id == "{merchant_id}" and r._field == "amount") |> sum()' result = query_api.query(org=INFLUXDB_ORG, query=query) total = 0.0 for table in result: for record in table.records: total += record.get_value() return {"merchant_id": merchant_id, "recent_10m_total": round(total, 2)} ```

同样保存退出nano编辑器。

一键启动技术栈

在`~/digital-economy-stack`目录下执行:

```bash docker compose up -d ```

等待3-5分钟(首次拉取镜像需要时间),执行`docker compose ps`查看所有容器状态,若4个容器均显示`Up`则部署成功。

配置收尾:补全关键参数与验证功能

获取并配置InfluxDB Token

  • 步骤1:访问InfluxDB Web界面:http://你的服务器公网IP:8086
  • 步骤2:使用docker-compose.yml中设置的初始账号密码登录
  • 步骤3:点击左侧菜单「Data」→「API Tokens」→点击「digital-economy's Token」(初始创建的全权限Token)
  • 步骤4:复制Token字符串,替换telegraf.conf和app/main.py中的`INFLUXDB_TOKEN_PLACEHOLDER`

替换完成后重启相关容器:

```bash docker compose restart telegraf fastapi ```

验证核心功能

  • 验证数据采集:访问Grafana Web界面:http://你的服务器公网IP:3000,初始账号密码均为`admin`(首次登录需修改),添加数据源InfluxDB 2.x(URL填`http://influxdb:8086`,Organization填`digital-economy`,Bucket填`core-data`,Token填获取到的InfluxDB Token),导入官方CPU/Memory/Dashboard模板(模板ID:12073),即可看到服务器实时指标。
  • 验证API服务:访问FastAPI自动生成的API文档:http://你的服务器公网IP:8000/docs,点击「/write-trade-data」→「Try it out」,填入商户ID(如`merchant_001`)、金额(如`199.9`),点击「Execute」,若返回成功状态则写入正常;再点击「/get-merchant-recent-total」→「Try it out」,填入相同商户ID,点击「Execute」,即可看到近10分钟的交易总额。

扩展建议(可选)

  • 数据采集:可在telegraf.conf中添加[[inputs.file]](采集本地日志)、[[inputs.mqtt_consumer]](采集IoT设备数据)、[[inputs.http]](采集第三方API数据)等模块,覆盖全域数据来源。
  • 数据可视化:可在Grafana中导入电商订单、物流监控等数字经济场景的模板(模板库地址:https://grafana.com/grafana/dashboards/)。
  • API服务:可在FastAPI中添加身份验证、限流等功能,使用Docker Compose的环境变量传递敏感信息(不要硬编码)。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图