前言
最近学习开源物联网平台Thingsboard项目,项目中用到zookeeper、kafka等中间件,这里在本机使用docker搭建kafka的本地开发环境,docker以及docker-compose怎么安装这里不做赘述
一、搭建步骤
1.选择版本
因为thingsboard3.2官方使用的zookeeper版本是3.5,kafka版本是2.12-2.3.0,跟他的版本保持一致
2.编写docker-compose文件
代码如下(示例):
version: '3'
services:
zookeeper:
image: zookeeper:3.5
container_name: zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:2.12-2.3.0
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 172.16.103.2
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_BROKER_ID: 1
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.103.2:9092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
container_name: kafka
volumes:
- /var/run/docker.sock:/var/run/docker.sock
注意:KAFKA_ADVERTISED_HOST_NAME需要填docker宿主机的IP,不要填localhost或者127.0.0.1,KAFKA_ZOOKEEPER_CONNECT里面的主机名用上面zookeeper的容器名
3.运行容器
在docker-compose对应的文件夹下运行以下命令:
docker-compose up -d
总结
之前用wurstmeister/zookeeper的这个zookeeper镜像搭起来跟thingsboard的不兼容有报错,但是改wurstmeister/zookeeper版本很麻烦,https://github.com/wurstmeister/zookeeper-docker/blob/master/Dockerfile里面的改个版本号对应的下载链接都没有了,所以直接替换了kafka官方的镜像,最后thingsboard里有个js执行器需要用到zookeeper,所以单独启动一个js执行器的镜像使用这个zookeeper
docker run -d --name js-executor --link zookeeper:zookeeper --net desktop_default -e TB_KAFKA_SERVERS="kafka:9092" chengpeipei/js-executor:3.2
其中desktop_default是通过docker inspect zookeeper,找到Networks信息确定的
评论区