JetLinks社区版开发环境Docker Compose配置详解
2025-07-07 07:26:40作者:庞眉杨Will
概述
JetLinks社区版是一个开源的物联网平台,本文主要解析其开发环境中的Docker Compose配置文件。这个配置文件为开发者提供了快速搭建JetLinks开发环境的能力,包含了平台运行所需的核心服务组件。
配置文件结构解析
该Docker Compose文件采用version 2格式定义,包含了四个关键服务:
- Redis - 内存数据库服务
- Elasticsearch - 搜索引擎服务
- Kibana - Elasticsearch可视化工具
- 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,确保时间相关功能在不同服务间保持一致。
开发环境使用建议
- 首次启动前,确保宿主机已安装Docker和Docker Compose
- 建议在Linux或macOS环境下运行,Windows用户可能需要调整挂载路径
- 启动命令:
docker-compose -f docker-compose.yml up -d
- 停止命令:
docker-compose -f docker-compose.yml down
- 各服务默认端口:
- Redis: 6379
- Elasticsearch: 9200/9300
- Kibana: 5601
- PostgreSQL: 5432
性能调优建议
对于资源有限的开发环境,可以适当调整:
- 降低Elasticsearch的JVM内存设置(ES_JAVA_OPTS)
- 考虑使用更轻量级的PostgreSQL镜像版本
- 如不需要Kibana,可以注释掉相关配置
总结
这份Docker Compose配置文件为JetLinks社区版提供了完整的开发环境基础设施,包含了数据存储、搜索和可视化等核心组件。通过容器化部署,开发者可以快速搭建开发环境,专注于业务逻辑的实现,而无需在环境配置上花费过多时间。