Add environment configuration and documentation for various services

- Created .env.example files for Kafka, Kibana, KodBox, Kong, Langfuse, Logstash, n8n, Nginx, OceanBase, OpenCoze, RocketMQ, TiDB, and TiKV.
- Added README.md and README.zh.md files for OceanBase, RocketMQ, TiDB, and TiKV, detailing usage, configuration, and access instructions.
- Implemented docker-compose.yaml files for OceanBase, RocketMQ, TiDB, and TiKV, defining service configurations, health checks, and resource limits.
- Included broker.conf for RocketMQ to specify broker settings.
- Established a consistent timezone (UTC) across all services.
- Provided optional port overrides in .env.example files for flexibility in deployment.
This commit is contained in:
Sun-ZhenXing
2025-10-22 11:46:50 +08:00
parent 84e8b85990
commit ece59b42bf
49 changed files with 2326 additions and 0 deletions

13
src/rocketmq/.env.example Normal file
View File

@@ -0,0 +1,13 @@
# RocketMQ version
ROCKETMQ_VERSION=5.3.1
ROCKETMQ_DASHBOARD_VERSION=2.0.0
# Timezone
TZ=UTC
# Port overrides (optional)
# ROCKETMQ_NAMESRV_PORT_OVERRIDE=9876
# ROCKETMQ_BROKER_PORT_OVERRIDE=10909
# ROCKETMQ_BROKER_VIP_PORT_OVERRIDE=10911
# ROCKETMQ_BROKER_HA_PORT_OVERRIDE=10912
# ROCKETMQ_DASHBOARD_PORT_OVERRIDE=8080

87
src/rocketmq/README.md Normal file
View File

@@ -0,0 +1,87 @@
# RocketMQ
Apache RocketMQ is a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability.
## Usage
```bash
docker compose up -d
```
## Components
This setup includes:
- **NameServer**: Manages broker routing information
- **Broker**: Stores and delivers messages
- **Dashboard**: Web UI for monitoring and management
## Configuration
The broker configuration is in `broker.conf`. Key settings:
- `brokerClusterName`: Cluster name
- `brokerName`: Broker name
- `autoCreateTopicEnable`: Auto-create topics (enabled by default)
- `flushDiskType`: Disk flush strategy (`ASYNC_FLUSH` for better performance)
## Ports
- `9876`: NameServer port
- `10909`: Broker listening port (fastRemotingServer)
- `10911`: Broker port (remoting server)
- `10912`: Broker HA port
- `8080`: Dashboard Web UI
## Access
### Dashboard
Access the RocketMQ Dashboard at: <http://localhost:8080>
### Command Line Tools
Execute admin commands:
```bash
# List clusters
docker compose exec broker mqadmin clusterList -n namesrv:9876
# List topics
docker compose exec broker mqadmin topicList -n namesrv:9876
# Create topic
docker compose exec broker mqadmin updateTopic -n namesrv:9876 -c DefaultCluster -t TestTopic
# Query message
docker compose exec broker mqadmin queryMsgById -n namesrv:9876 -i <messageId>
```
## Example: Send and Receive Messages
```bash
# Send messages
docker compose exec broker sh /home/rocketmq/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
# Consume messages
docker compose exec broker sh /home/rocketmq/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
```
## Client Connection
Configure your RocketMQ client to connect to:
- NameServer: `localhost:9876`
## Notes
- This is a single-master setup suitable for development
- For production, use a multi-master or multi-master-multi-slave setup
- Adjust JVM heap sizes in `JAVA_OPT_EXT` based on your needs
- Data is persisted in named volumes
## References
- [RocketMQ Official Documentation](https://rocketmq.apache.org/docs/quick-start/)
- [RocketMQ Docker Hub](https://hub.docker.com/r/apache/rocketmq)
- [RocketMQ Dashboard](https://github.com/apache/rocketmq-dashboard)

87
src/rocketmq/README.zh.md Normal file
View File

@@ -0,0 +1,87 @@
# RocketMQ
Apache RocketMQ 是一个分布式消息和流平台,具有低延迟、高性能和可靠性,万亿级容量和灵活的可扩展性。
## 使用方法
```bash
docker compose up -d
```
## 组件说明
此配置包含:
- **NameServer**:管理 Broker 路由信息
- **Broker**:存储和传递消息
- **Dashboard**:监控和管理的 Web UI
## 配置说明
Broker 配置在 `broker.conf` 文件中,主要设置:
- `brokerClusterName`:集群名称
- `brokerName`Broker 名称
- `autoCreateTopicEnable`:自动创建主题(默认启用)
- `flushDiskType`:磁盘刷新策略(`ASYNC_FLUSH` 性能更好)
## 端口说明
- `9876`NameServer 端口
- `10909`Broker 监听端口fastRemotingServer
- `10911`Broker 端口remoting server
- `10912`Broker HA 端口
- `8080`Dashboard Web UI
## 访问方式
### Dashboard
访问 RocketMQ Dashboard<http://localhost:8080>
### 命令行工具
执行管理命令:
```bash
# 列出集群
docker compose exec broker mqadmin clusterList -n namesrv:9876
# 列出主题
docker compose exec broker mqadmin topicList -n namesrv:9876
# 创建主题
docker compose exec broker mqadmin updateTopic -n namesrv:9876 -c DefaultCluster -t TestTopic
# 查询消息
docker compose exec broker mqadmin queryMsgById -n namesrv:9876 -i <messageId>
```
## 示例:发送和接收消息
```bash
# 发送消息
docker compose exec broker sh /home/rocketmq/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
# 消费消息
docker compose exec broker sh /home/rocketmq/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
```
## 客户端连接
配置 RocketMQ 客户端连接到:
- NameServer`localhost:9876`
## 注意事项
- 这是一个单主配置,适合开发环境
- 生产环境建议使用多主或多主多从配置
- 根据需要在 `JAVA_OPT_EXT` 中调整 JVM 堆大小
- 数据持久化在命名卷中
## 参考资料
- [RocketMQ 官方文档](https://rocketmq.apache.org/docs/quick-start/)
- [RocketMQ Docker Hub](https://hub.docker.com/r/apache/rocketmq)
- [RocketMQ Dashboard](https://github.com/apache/rocketmq-dashboard)

22
src/rocketmq/broker.conf Normal file
View File

@@ -0,0 +1,22 @@
# Broker configuration
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
# Network settings
brokerIP1=broker
listenPort=10911
# Storage settings
storePathRootDir=/home/rocketmq/store
storePathCommitLog=/home/rocketmq/store/commitlog
# Auto create topic
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
# Delete when
deleteWhen=04
# Flush settings
flushDiskType=ASYNC_FLUSH

View File

@@ -0,0 +1,98 @@
x-default: &default
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 100m
max-file: "3"
services:
namesrv:
<<: *default
image: apache/rocketmq:${ROCKETMQ_VERSION:-5.3.1}
command: sh mqnamesrv
environment:
TZ: ${TZ:-UTC}
JAVA_OPT_EXT: "-Xms512m -Xmx512m"
ports:
- "${ROCKETMQ_NAMESRV_PORT_OVERRIDE:-9876}:9876"
volumes:
- namesrv_logs:/home/rocketmq/logs
deploy:
resources:
limits:
cpus: '1.0'
memory: 1G
reservations:
cpus: '0.25'
memory: 512M
healthcheck:
test: ["CMD-SHELL", "mqadmin clusterList -n localhost:9876 || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
broker:
<<: *default
image: apache/rocketmq:${ROCKETMQ_VERSION:-5.3.1}
command: sh mqbroker -n namesrv:9876 -c /home/rocketmq/broker.conf
environment:
TZ: ${TZ:-UTC}
JAVA_OPT_EXT: "-Xms1g -Xmx1g"
ports:
- "${ROCKETMQ_BROKER_PORT_OVERRIDE:-10909}:10909"
- "${ROCKETMQ_BROKER_VIP_PORT_OVERRIDE:-10911}:10911"
- "${ROCKETMQ_BROKER_HA_PORT_OVERRIDE:-10912}:10912"
volumes:
- broker_logs:/home/rocketmq/logs
- broker_store:/home/rocketmq/store
- ./broker.conf:/home/rocketmq/broker.conf:ro
depends_on:
namesrv:
condition: service_healthy
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
cpus: '0.5'
memory: 1G
healthcheck:
test: ["CMD-SHELL", "mqadmin clusterList -n namesrv:9876 | grep -q broker || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
dashboard:
<<: *default
image: apacherocketmq/rocketmq-dashboard:${ROCKETMQ_DASHBOARD_VERSION:-2.0.0}
environment:
TZ: ${TZ:-UTC}
JAVA_OPTS: "-Xms256m -Xmx256m -Drocketmq.namesrv.addr=namesrv:9876"
ports:
- "${ROCKETMQ_DASHBOARD_PORT_OVERRIDE:-8080}:8080"
depends_on:
namesrv:
condition: service_healthy
deploy:
resources:
limits:
cpus: '1.0'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8080 || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
volumes:
namesrv_logs:
broker_logs:
broker_store: