# spring-cloud-alibaba-dev-env **Repository Path**: buwei/spring-cloud-alibaba-dev-env ## Basic Information - **Project Name**: spring-cloud-alibaba-dev-env - **Description**: 基于docker compose的spring-cloud-alibaba微服务开发配套的精简开发环境 - **Primary Language**: Shell - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-04-28 - **Last Updated**: 2021-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # spring-cloud-alibaba-dev-env #### 介绍 spring-cloud-alibaba微服务开发配套的基于docker的单机开发环境, 用docker-compose的兼容模式启动,可以达到精确控制硬件资源使用的效果. 在我的虚拟机开发环境中占用了1650MB内存在启动以下6个开发组件(默认docker-compose.yml中注释掉了rocketmq-console的配置,不启动它来节约内存): ``` 1. mysql 8.0.19 内存分配150MB 2. nacos 1.2.1 内存分配600MB 3. sentinel 1.7.2 内存分配250MB 4. rocketmq 4.6.0 内存分配450MB (broker 300MB + namesrv 150MB) 5. redis 5.0.8 内存分配80MB 6. seata 1.2.0 内存分配120MB 7. rocketmq-console 内存分配300MB ``` #### 安装教程 1. 首先必须在你的linux开发环境中安装好 docker 和 docker compose; 2. 执行预处理脚本(pre_mysql.sh, pre_redis.sh, pre_rocketmq.sh, pre_seata.sh)来copy一些配置文件; 3. 在启动mysql的镜像后,执行nacos-mysql.sql,将nacos的配置中心的数据持久化到mysql中,当然你也可以修改docker compose的配置文件,直接持久化到nacos自带的内嵌数据库中 4. docker-compose --compatibility up -d启动全部容器 #### 文件及脚本说明 1. 在linux开发环境中执行docker stats来查看启动情况 ``` CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 6b3c6f090d25 seata-server 0.99% 65MiB / 120MiB 54.17% 1.77MB / 4.59MB 0B / 0B 34 2168bac17302 rocketmq-broker-a-m 4.78% 246.7MiB / 300MiB 82.23% 148kB / 1.79MB 0B / 0B 86 1b3acbdff3ae nacos-standalone-mysql 1.11% 481.8MiB / 600MiB 80.29% 11.6MB / 7.48MB 0B / 0B 101 5853aad28eb7 redis 0.17% 4.855MiB / 80MiB 6.07% 2.84kB / 5.04kB 0B / 0B 4 33e002ea9d1a rocketmq-namesrv 0.26% 107.8MiB / 150MiB 71.84% 1.79MB / 145kB 0B / 0B 40 90c571754778 sentinel-dashboard 3.60% 222.1MiB / 250MiB 88.84% 1.17kB / 0B 0B / 0B 55 5fa37800b858 mysql 1.56% 102.2MiB / 150MiB 68.15% 5.44MB / 6.42MB 0B / 0B 48 ``` 2. pre_mysql.sh替换配置文件并挂载到docker中来精简单机开发环境中的mysql8的内存使用情况 3. nacos目录下的文件时用来挂载到nacos容器中,用来让nacos适配mysql8的驱动程序 4. pre_rocketmq.sh用来替换真实的IP监听地址到rocketmq配置文件中 ```shell #!/bin/bash cp -rf rocketmq/conf ~/ IPADDR=`ip a show dev ens33|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}'` sed -i "s/127.0.0.1/${IPADDR}/" ~/conf/broker/a-m/conf/broker.properties sed -i "s/127.0.0.1/${IPADDR}/" ~/conf/broker/a-s/conf/broker.properties ``` 5. pre_seata.sh用来让nacos 作为 Seata 配置中心 ```json registry { # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa type = "nacos" nacos { # 在同一个docker network中可以用服务名来引用nacos serverAddr = "nacos-server:8848" namespace = "" cluster = "default" } } config { # file、nacos 、apollo、zk、consul、etcd3 type = "nacos" nacos { serverAddr = "nacos-server:8848" namespace = "" group = "SEATA_GROUP" } } ``` 6. pre_redis.sh用来copy限制了内存最大使用量的配置文件到目标位置/root/conf/redis/conf/redis.conf并映射到容器中 ``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b3c6f090d25 seataio/seata-server:1.1.0 "java -Djava.securit…" 24 hours ago Up 24 hours 0.0.0.0:8091->8091/tcp seata-server 2168bac17302 base/rocketmq-broker-server:v4.6.0 "/bin/sh -c 'cd ${RO…" 24 hours ago Up 24 hours 0.0.0.0:10909->10909/tcp, 0.0.0.0:10911->10911/tcp rocketmq-broker-a-m 1b3acbdff3ae nacos/nacos-server:1.2.1 "bin/docker-startup.…" 24 hours ago Up 24 hours 0.0.0.0:8848->8848/tcp nacos-standalone-mysql 5853aad28eb7 redis:5.0.8-alpine3.11 "docker-entrypoint.s…" 24 hours ago Up 24 hours 0.0.0.0:6379->6379/tcp redis 33e002ea9d1a base/rocketmq-namesrv:v4.6.0 "/bin/sh -c 'cd ${RO…" 24 hours ago Up 24 hours 0.0.0.0:9876->9876/tcp rocketmq-namesrv 90c571754778 base/sentinel-dashboard:v1.7.2 "/bin/sh -c 'exec ja…" 24 hours ago Up 24 hours 0.0.0.0:9081->8080/tcp sentinel-dashboard 5fa37800b858 mysql:8.0.19 "docker-entrypoint.s…" 24 hours ago Up 24 hours 0.0.0.0:3306->3306/tcp, 33060/tcp mysql ```