• Mac M1采用docker安装工具


    一、安装nacos2.0.3

    1、拉取镜像

    docker pull zhusaidong/nacos-server-m1:2.0.3

    2、启动镜像(默认启动),该方式校验比较宽松,默认使用这种方式即可,镜像删除数据也就没了

    docker run --env MODE=standalone --name nacos2.0.3 -d -p 8848:8848 -p 9848:9848 -p 9849:9849  zhusaidong/nacos-server-m1:2.0.3

    如果想保留数据,可指定本地数据库,nacos数据库脚本:

    1. /*
    2. * Copyright 1999-2018 Alibaba Group Holding Ltd.
    3. *
    4. * Licensed under the Apache License, Version 2.0 (the "License");
    5. * you may not use this file except in compliance with the License.
    6. * You may obtain a copy of the License at
    7. *
    8. * http://www.apache.org/licenses/LICENSE-2.0
    9. *
    10. * Unless required by applicable law or agreed to in writing, software
    11. * distributed under the License is distributed on an "AS IS" BASIS,
    12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13. * See the License for the specific language governing permissions and
    14. * limitations under the License.
    15. */
    16. /******************************************/
    17. /* 数据库全名 = nacos_config */
    18. /* 表名称 = config_info */
    19. /******************************************/
    20. CREATE TABLE `config_info` (
    21. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
    22. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
    23. `group_id` varchar(255) DEFAULT NULL,
    24. `content` longtext NOT NULL COMMENT 'content',
    25. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
    26. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    27. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
    28. `src_user` text COMMENT 'source user',
    29. `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
    30. `app_name` varchar(128) DEFAULT NULL,
    31. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
    32. `c_desc` varchar(256) DEFAULT NULL,
    33. `c_use` varchar(64) DEFAULT NULL,
    34. `effect` varchar(64) DEFAULT NULL,
    35. `type` varchar(64) DEFAULT NULL,
    36. `c_schema` text,
    37. `encrypted_data_key` text NOT NULL COMMENT '秘钥',
    38. PRIMARY KEY (`id`),
    39. UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
    40. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
    41. /******************************************/
    42. /* 数据库全名 = nacos_config */
    43. /* 表名称 = config_info_aggr */
    44. /******************************************/
    45. CREATE TABLE `config_info_aggr` (
    46. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
    47. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
    48. `group_id` varchar(255) NOT NULL COMMENT 'group_id',
    49. `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
    50. `content` longtext NOT NULL COMMENT '内容',
    51. `gmt_modified` datetime NOT NULL COMMENT '修改时间',
    52. `app_name` varchar(128) DEFAULT NULL,
    53. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
    54. PRIMARY KEY (`id`),
    55. UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
    56. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
    57. /******************************************/
    58. /* 数据库全名 = nacos_config */
    59. /* 表名称 = config_info_beta */
    60. /******************************************/
    61. CREATE TABLE `config_info_beta` (
    62. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
    63. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
    64. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
    65. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
    66. `content` longtext NOT NULL COMMENT 'content',
    67. `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
    68. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
    69. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    70. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
    71. `src_user` text COMMENT 'source user',
    72. `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
    73. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
    74. `encrypted_data_key` text NOT NULL COMMENT '秘钥',
    75. PRIMARY KEY (`id`),
    76. UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
    77. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
    78. /******************************************/
    79. /* 数据库全名 = nacos_config */
    80. /* 表名称 = config_info_tag */
    81. /******************************************/
    82. CREATE TABLE `config_info_tag` (
    83. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
    84. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
    85. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
    86. `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
    87. `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
    88. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
    89. `content` longtext NOT NULL COMMENT 'content',
    90. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
    91. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    92. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
    93. `src_user` text COMMENT 'source user',
    94. `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
    95. PRIMARY KEY (`id`),
    96. UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
    97. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
    98. /******************************************/
    99. /* 数据库全名 = nacos_config */
    100. /* 表名称 = config_tags_relation */
    101. /******************************************/
    102. CREATE TABLE `config_tags_relation` (
    103. `id` bigint(20) NOT NULL COMMENT 'id',
    104. `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
    105. `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
    106. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
    107. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
    108. `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
    109. `nid` bigint(20) NOT NULL AUTO_INCREMENT,
    110. PRIMARY KEY (`nid`),
    111. UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
    112. KEY `idx_tenant_id` (`tenant_id`)
    113. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
    114. /******************************************/
    115. /* 数据库全名 = nacos_config */
    116. /* 表名称 = group_capacity */
    117. /******************************************/
    118. CREATE TABLE `group_capacity` (
    119. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    120. `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
    121. `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
    122. `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
    123. `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
    124. `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
    125. `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
    126. `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
    127. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    128. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
    129. PRIMARY KEY (`id`),
    130. UNIQUE KEY `uk_group_id` (`group_id`)
    131. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
    132. /******************************************/
    133. /* 数据库全名 = nacos_config */
    134. /* 表名称 = his_config_info */
    135. /******************************************/
    136. CREATE TABLE `his_config_info` (
    137. `id` bigint(64) unsigned NOT NULL,
    138. `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    139. `data_id` varchar(255) NOT NULL,
    140. `group_id` varchar(128) NOT NULL,
    141. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
    142. `content` longtext NOT NULL,
    143. `md5` varchar(32) DEFAULT NULL,
    144. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
    145. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
    146. `src_user` text,
    147. `src_ip` varchar(50) DEFAULT NULL,
    148. `op_type` char(10) DEFAULT NULL,
    149. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
    150. `encrypted_data_key` text NOT NULL COMMENT '秘钥',
    151. PRIMARY KEY (`nid`),
    152. KEY `idx_gmt_create` (`gmt_create`),
    153. KEY `idx_gmt_modified` (`gmt_modified`),
    154. KEY `idx_did` (`data_id`)
    155. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
    156. /******************************************/
    157. /* 数据库全名 = nacos_config */
    158. /* 表名称 = tenant_capacity */
    159. /******************************************/
    160. CREATE TABLE `tenant_capacity` (
    161. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    162. `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
    163. `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
    164. `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
    165. `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
    166. `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
    167. `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
    168. `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
    169. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    170. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
    171. PRIMARY KEY (`id`),
    172. UNIQUE KEY `uk_tenant_id` (`tenant_id`)
    173. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
    174. CREATE TABLE `tenant_info` (
    175. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
    176. `kp` varchar(128) NOT NULL COMMENT 'kp',
    177. `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
    178. `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
    179. `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
    180. `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
    181. `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
    182. `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
    183. PRIMARY KEY (`id`),
    184. UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
    185. KEY `idx_tenant_id` (`tenant_id`)
    186. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
    187. CREATE TABLE `users` (
    188. `username` varchar(50) NOT NULL PRIMARY KEY,
    189. `password` varchar(500) NOT NULL,
    190. `enabled` boolean NOT NULL
    191. );
    192. CREATE TABLE `roles` (
    193. `username` varchar(50) NOT NULL,
    194. `role` varchar(50) NOT NULL,
    195. UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
    196. );
    197. CREATE TABLE `permissions` (
    198. `role` varchar(50) NOT NULL,
    199. `resource` varchar(255) NOT NULL,
    200. `action` varchar(8) NOT NULL,
    201. UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
    202. );
    203. INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
    204. INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

    指定本地mysql数据库方式,使用容器内配置文件,数据库结构参考nacos数据库脚本

    1. docker run -d \
    2. -e PREFER_HOST_MODE=ip \
    3. -e MODE=standalone \
    4. -e SPRING_DATASOURCE_PLATFORM=mysql \
    5. -e MYSQL_SERVICE_HOST=本机ip \
    6. -e MYSQL_SERVICE_PORT=3306 \
    7. -e MYSQL_SERVICE_USER=root \
    8. -e MYSQL_SERVICE_PASSWORD=自己的密码 \
    9. -e MYSQL_SERVICE_DB_NAME=nacos \
    10. -e TIME_ZONE='Asia/Shanghai' \
    11. -p 8848:8848 \
    12. -p 9848:9848 \
    13. -p 9849:9849 \
    14. --name nacos2.0.3 \
    15. --restart=always \
    16. zhusaidong/nacos-server-m1:2.0.3

    二、Redis

    1、查找镜像

    docker search redis

    2、拉取镜像

    docker pull redis

    3、创建文件夹

    1. mkdir -p /Users/xxxx/devTools/docker/redis/data
    2. mkdir -p /Users/xxxx/devTools/docker/redis/conf

    4、创建配置文件redis.conf

    1. cd /Users/xxxx/devTools/docker/redis/conf
    2. vi redis.conf

    创建文件写入如下配置内容

    1. #注释掉使redis可以外部访问
    2. #bind 127.0.0.1
    3. #以守护线程的方式启动
    4. daemonize no
    5. #设置密码
    6. requirepass 123456
    7. #redis开启持久化
    8. appendonly yes
    9. #防止出现远程主机强迫关闭现有连接的错误 默认300
    10. tcp-keepalive 300

    保存退出(esc->:wq)

    5、启动容器

    docker run --name myRedis -p 6379:6379 -v /Users/xxxx/devTools/docker/redis/data:/data -v /Users/xxxx/devTools/docker/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf 

    docker run:运行容器

    –name redis:容器名称

    -p 6379:6379:将主机的6379端口(冒号前)映射到容器的6379端口(冒号后)

    -v /Users/xxxx/devTools/docker/redis/data:/data:将主机的/Users/xxxx/devTools/docker/redis/data目录挂载到容器的/data目录

    -v /Users/xxxx/devTools/docker/redis/conf/redis.conf:/etc/redis/redis.conf:将主机的/Users/xxxx/devTools/docker/redis/conf/redis.conf配置文件挂载到容器的/etc/redis/redis.conf文件

    -d redis:后台程序运行redis

    redis-server /etc/redis/redis.conf:指定redis启动的配置文件

    三、rabbitmq

    1、通过docker源找到支持arm架构的镜像,或者直接访问hub.docker.com/_/rabbitmq

     2、下载镜像并查看

    1. #下载镜像
    2. docker pull rabbitmq
    3. #查看镜像
    4. docker images

    3、启动rabbitmq

    1. docker run \
    2. -e RABBITMQ_DEFAULT_USER=guest \
    3. -e RABBITMQ_DEFAULT_PASS=guest \
    4. --name mq \
    5. --hostname localhost \
    6. -p 15672:15672 \
    7. -p 5672:5672 \
    8. -d \
    9. rabbitmq

    访问http://localhost:15672/#/ 发现无法访问,需要开启web页面管理。

    4、开启web页面管理

    1. # 进入镜像
    2. docker exec -it mq /bin/bash
    3. # 开启管理页面
    4. rabbitmq-plugins enable rabbitmq_management

    至此,即可访问 

    服务端连接访问:ip:5672

    四、安装Rocketmq

    1、采用docker-compose进行安装,需要一个编排文件rocketmq.yml(文件名称可自定义),文件内容如下:

    1. version: '3.5'
    2. services:
    3. rmqnamesrv:
    4. image: foxiswho/rocketmq:server
    5. container_name: rmqnamesrv
    6. ports:
    7. - 9876:9876
    8. volumes:
    9. - /Users/xxx/devTools/docker/rocketmq/logs:/opt/logs
    10. - /Users/xxx/devTools/docker/rocketmq/store:/opt/store
    11. networks:
    12. rmq:
    13. aliases:
    14. - rmqnamesrv
    15. rmqbroker:
    16. image: foxiswho/rocketmq:broker
    17. container_name: rmqbroker
    18. ports:
    19. - 10909:10909
    20. - 10911:10911
    21. volumes:
    22. - /Users/xxx/devTools/docker/rocketmq/broker/logs:/opt/logs
    23. - /Users/xxx/devTools/docker/rocketmq/broker/store:/opt/store
    24. - /Users/xxx/devTools/docker/rocketmq/broker/conf/broker.conf:/etc/rocketmq/broker.conf
    25. environment:
    26. NAMESRV_ADDR: "rmqnamesrv:9876"
    27. JAVA_OPTS: " -Duser.home=/opt"
    28. JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
    29. command: mqbroker -c /etc/rocketmq/broker.conf
    30. depends_on:
    31. - rmqnamesrv
    32. networks:
    33. rmq:
    34. aliases:
    35. - rmqbroker
    36. rmqconsole:
    37. image: styletang/rocketmq-console-ng
    38. container_name: rmqconsole
    39. ports:
    40. - 8999:8080
    41. environment:
    42. JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
    43. depends_on:
    44. - rmqnamesrv
    45. networks:
    46. rmq:
    47. aliases:
    48. - rmqconsole
    49. networks:
    50. rmq:
    51. name: rmq
    52. driver: bridge

    2、创建rocketmq.yml文件中需要映射的文件夹

    1. # 创建映射文件夹
    2. mkdir -p /Users/xxx/devTools/docker/rocketmq/logs
    3. mkdir -p /Users/xxx/devTools/docker/rocketmq/store
    4. mkdir -p /Users/xxx/devTools/docker/rocketmq/broker/logs
    5. mkdir -p /Users/xxx/devTools/docker/rocketmq/broker/store
    6. mkdir -p /Users/xxx/devTools/docker/rocketmq/broker/conf

    3、创建broker配置文件broker.conf

    vi /Users/xxx/devTools/docker/rocketmq/broker/conf/broker.conf

    broker.conf内容

    1. # 所属集群名称,如果节点较多可以配置多个
    2. brokerClusterName = DefaultCluster
    3. #broker名称,master 和 slave 使用相同的名称,表明他们的主从关系
    4. brokerName = broker-a
    5. #0表示 Master,大于 0 表示不同的 slave
    6. brokerId = 0
    7. #表示几点做消息删除动作,默认是凌晨4点
    8. deleteWhen = 04
    9. #在磁盘上保留消息的时长,单位是小时
    10. fileReservedTime = 48
    11. #有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示 Master 和 Slave 之间同步数据的机制;
    12. brokerRole = ASYNC_MASTER
    13. #刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH 表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功
    14. 状态,ASYNC_FLUSH 不需要;
    15. flushDiskType = ASYNC_FLUSH
    16. # 设置 broker 节点所在服务器的 ip 地址、物理 ip,不能用127.0.0.1、localhost、docker内网ip
    17. brokerIP1 = 宿主机ip
    18. listenPort=10911
    19. defaultTopicQueueNums=4
    20. autoCreateTopicEnable=true
    21. autoCreateSubscriptionGroup=true
    22. mapedFileSizeCommitLog=1073741824
    23. mapedFileSizeConsumeQueue=300000
    24. diskMaxUsedSpaceRatio=88
    25. maxMessageSize=65536

    4、启动容器

    把rocktemq.yml放到/Users/xxx/devTools/docker/rocketmq(为了方便管理,放置位置可自定义),执行启动容器命令

    docker-compose -f rocketmq.yml up -d

    注意一定要在kafka.yml所在文件夹下执行,否则会报找不到rocketmq.yml

    服务端连接访问:ip:9876

    管理页面访问(端口号rocketmq.yml映射端口访问):localhost:8999

    五、kafka集群

    1、采用docker-compose进行安装,需要一个编排文件kafka.yml(文件名称可自定义),文件内容如下:

    1. version: '3.3'
    2. services:
    3. kafka_zookeeper:
    4. image: zookeeper
    5. container_name: myZookeeper
    6. ports:
    7. - 2181:2181
    8. volumes:
    9. - /Users/xxx/devTools/docker/kafka/zookeeper/data
    10. - /Users/xxx/devTools/docker/kafka/zookeeper/datalog:/datalog
    11. - /Users/xxx/devTools/docker/kafka/zookeeper/logs:/logs
    12. restart: on-failure
    13. kafka1:
    14. image: wurstmeister/kafka
    15. depends_on:
    16. - kafka_zookeeper
    17. container_name: kafka1
    18. ports:
    19. - 9092:9092
    20. environment:
    21. KAFKA_BROKER_ID: 0
    22. KAFKA_NUM_PARTITIONS: 3
    23. KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    24. KAFKA_ZOOKEEPER_CONNECT: docker.for.mac.host.internal:2181
    25. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://docker.for.mac.host.internal:9092
    26. KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
    27. volumes:
    28. - /Users/xxx/devTools/docker/kafka/cluster/broker1/logs:/opt/kafka/logs
    29. - /var/run/docker.sock:/var/run/docker.sock
    30. restart: unless-stopped
    31. kafka2:
    32. image: wurstmeister/kafka
    33. depends_on:
    34. - kafka_zookeeper
    35. container_name: kafka2
    36. ports:
    37. - 9093:9093
    38. environment:
    39. KAFKA_BROKER_ID: 1
    40. KAFKA_NUM_PARTITIONS: 3
    41. KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    42. KAFKA_ZOOKEEPER_CONNECT: docker.for.mac.host.internal:2181
    43. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://docker.for.mac.host.internal:9093
    44. KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
    45. volumes:
    46. - /Users/xxx/devTools/docker/kafka/cluster/broker2/logs:/opt/kafka/logs
    47. - /var/run/docker.sock:/var/run/docker.sock
    48. restart: unless-stopped
    49. kafka3:
    50. image: wurstmeister/kafka
    51. depends_on:
    52. - kafka_zookeeper
    53. container_name: kafka3
    54. ports:
    55. - 9094:9094
    56. environment:
    57. KAFKA_BROKER_ID: 2
    58. KAFKA_NUM_PARTITIONS: 3
    59. KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    60. KAFKA_ZOOKEEPER_CONNECT: docker.for.mac.host.internal:2181
    61. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://docker.for.mac.host.internal:9094
    62. KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094
    63. volumes:
    64. - /Users/xxx/devTools/docker/kafka/cluster/broker3/logs:/opt/kafka/logs
    65. - /var/run/docker.sock:/var/run/docker.sock
    66. restart: unless-stopped
    67. kafka-manager:
    68. image: sheepkiller/kafka-manager
    69. container_name: kafka-manager
    70. depends_on:
    71. - kafka_zookeeper
    72. ports:
    73. - 9200:9000
    74. environment:
    75. ZK_HOSTS: docker.for.mac.host.internal:2181

    2、创建kafka.yml文件中需要映射的文件夹

    1. mkdir -p /Users/xxx/devTools/docker/kafka/zookeeper/data
    2. mkdir -p /Users/xxx/devTools/docker/kafka/zookeeper/datalog
    3. mkdir -p /Users/xxx/devTools/docker/kafka/zookeeper/logs
    4. mkdir -p /Users/xxx/devTools/docker/kafka/cluster/broker1/logs
    5. mkdir -p /Users/xxx/devTools/docker/kafka/cluster/broker2/logs
    6. mkdir -p /Users/xxx/devTools/docker/kafka/cluster/broker3/logs

    3、启动容器

    为了方便管理,把kafka.yml文件放置到/Users/xxx/devTools/docker/kafka文件夹下,然后在该文件夹下执行命令启动容器:

    docker-compose -f kafka.yml up -d

    注意一定要在kafka.yml所在文件夹下执行,否则会报找不到kafka.yml

    Docker Desktop显示如下图,表示启动成功(也可以使用docker命令查看)

     访问管理页面(端口号根据kafka.yml文件实际配置填写):localhost:9200,添加集群

    显示下图代表添加集群成功

     4、测试 

    查看kafaka容器节点

    docker ps -a

    进入其中一个kafka容器节点

    docker exec -it {容器id} /bin/sh

    创建一个test主题

    1. kafka-topics.sh --create --zookeeper docker.for.mac.host.internal:2181 --replication-factor 1 --partitions 1 --topic test
    2. # 查看主题列表
    3. kafka-topics.sh --zookeeper docker.for.mac.host.internal:2181 --list

    开启一个生产者客户端

    1. # --broker-list:指定 kafka 的 ip 和 port
    2. # --topic:指定消息发送到哪个主题
    3. kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test

    开启一个消费着客户端

    1. # --bootstrap-server:指定 kafka 的 ip 和 port
    2. # --topic:指定订阅的主题
    3. kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test

    生产着发送消息,消费者接收消息如下图标识kafka搭建成功

    生产者发送消息
    生产着发送消息

     

    消费者接收消息

     

  • 相关阅读:
    七夕看什么电影好?爬取电影评分并存入csv文件
    dll文件【C#】
    使用Matplotlib画多y轴图
    2023年9月青少年软件编程(Python) 等级考试试卷(一级)
    ElementUl-布局+分页+表格+导航栏
    Proxmox VE Install 7.2
    【鸿蒙】 模拟器运⾏
    谷歌Freshness新鲜度算法:如何利用它提升网站排名?
    照片相框软件有什么?照片相框怎么加技巧分享
    哪吒汽车选择BlackBerry QNX为中国新能源轿跑——哪吒S保驾护航
  • 原文地址:https://blog.csdn.net/qq_21875331/article/details/126206391