首页
/ JetLinks社区版开发环境Docker Compose配置详解

JetLinks社区版开发环境Docker Compose配置详解

2025-07-07 07:26:40作者:庞眉杨Will

概述

JetLinks社区版是一个开源的物联网平台,本文主要解析其开发环境中的Docker Compose配置文件。这个配置文件为开发者提供了快速搭建JetLinks开发环境的能力,包含了平台运行所需的核心服务组件。

配置文件结构解析

该Docker Compose文件采用version 2格式定义,包含了四个关键服务:

  1. Redis - 内存数据库服务
  2. Elasticsearch - 搜索引擎服务
  3. Kibana - Elasticsearch可视化工具
  4. PostgreSQL - 关系型数据库服务

各服务详细配置

Redis服务配置

redis:
  image: redis:5.0.4
  container_name: jetlinks-ce-redis
  ports:
    - "6379:6379"
  volumes:
    - "./data/redis:/data"
  command: redis-server --appendonly yes
  environment:
    - TZ=Asia/Shanghai
  • 使用Redis 5.0.4官方镜像
  • 容器命名为jetlinks-ce-redis
  • 映射6379端口到宿主机
  • 挂载数据卷实现持久化存储
  • 启用AOF持久化模式(appendonly yes)
  • 设置时区为亚洲/上海

Redis在JetLinks中主要用于缓存和消息队列功能,高性能的内存数据库特性能够显著提升系统响应速度。

Elasticsearch服务配置

elasticsearch:
  image: elasticsearch:6.8.11
  container_name: jetlinks-ce-elasticsearch
  environment:
    ES_JAVA_OPTS: -Djava.net.preferIPv4Stack=true -Xms1g -Xmx1g
    transport.host: 0.0.0.0
    discovery.type: single-node
    bootstrap.memory_lock: "true"
    discovery.zen.minimum_master_nodes: 1
    discovery.zen.ping.unicast.hosts: elasticsearch
  ports:
    - "9200:9200"
    - "9300:9300"
  • 使用Elasticsearch 6.8.11版本
  • 配置JVM堆内存为1GB
  • 设置为单节点模式(discovery.type: single-node)
  • 启用内存锁定(bootstrap.memory_lock)
  • 开放9200(REST API)和9300(集群通信)端口

Elasticsearch在JetLinks中负责设备数据的存储和检索,特别是时序数据和日志数据的存储与快速查询。

Kibana服务配置

kibana:
  image: kibana:6.8.11
  container_name: jetlinks-ce-kibana
  environment:
    ELASTICSEARCH_URL: http://elasticsearch:9200
  links:
    - elasticsearch:elasticsearch
  ports:
    - "5601:5601"
  depends_on:
    - elasticsearch
  • 使用与Elasticsearch匹配的Kibana 6.8.11版本
  • 配置连接到Elasticsearch服务
  • 映射5601端口到宿主机
  • 设置依赖关系,确保Elasticsearch先启动

Kibana为开发者提供了可视化查询和分析Elasticsearch中存储数据的能力,便于调试和监控。

PostgreSQL服务配置

postgres:
  image: postgres:11-alpine
  container_name: jetlinks-ce-postgres
  ports:
    - "5432:5432"
  volumes:
    - "./data/pg:/var/lib/postgresql/data"
  environment:
    POSTGRES_PASSWORD: jetlinks
    POSTGRES_DB: jetlinks
    TZ: Asia/Shanghai
  • 使用PostgreSQL 11的Alpine轻量级版本
  • 映射5432端口到宿主机
  • 挂载数据卷实现持久化存储
  • 设置默认数据库jetlinks和密码jetlinks
  • 配置时区为亚洲/上海

PostgreSQL作为JetLinks的主要关系型数据库,存储平台的核心元数据、用户信息、设备配置等结构化数据。

数据持久化配置

配置文件通过volumes实现了数据的持久化:

volumes:
  postgres-volume:
  redis-volume:

同时使用本地目录挂载方式:

  • Redis数据存储在./data/redis目录
  • PostgreSQL数据存储在./data/pg目录

这种设计确保了容器重启后数据不会丢失,适合开发环境使用。

时区配置

所有服务都统一配置了时区为Asia/Shanghai,确保时间相关功能在不同服务间保持一致。

开发环境使用建议

  1. 首次启动前,确保宿主机已安装Docker和Docker Compose
  2. 建议在Linux或macOS环境下运行,Windows用户可能需要调整挂载路径
  3. 启动命令:docker-compose -f docker-compose.yml up -d
  4. 停止命令:docker-compose -f docker-compose.yml down
  5. 各服务默认端口:
    • Redis: 6379
    • Elasticsearch: 9200/9300
    • Kibana: 5601
    • PostgreSQL: 5432

性能调优建议

对于资源有限的开发环境,可以适当调整:

  1. 降低Elasticsearch的JVM内存设置(ES_JAVA_OPTS)
  2. 考虑使用更轻量级的PostgreSQL镜像版本
  3. 如不需要Kibana,可以注释掉相关配置

总结

这份Docker Compose配置文件为JetLinks社区版提供了完整的开发环境基础设施,包含了数据存储、搜索和可视化等核心组件。通过容器化部署,开发者可以快速搭建开发环境,专注于业务逻辑的实现,而无需在环境配置上花费过多时间。