一 搭建一个zk单实例
测试环境可能会用到zk单实例,简单粗暴
docker run --name my-zookeeper -d -it -p 2181:2181 --restart always -e JVMFLAGS="-Xmx8096m" zookeeper:3.5.9
0 搭建 mysql 单实例
注意:生产上使用 容器化的MySQL 需要慎重.在测试环境中,这样搭最快了…
docker pull mysql 5.7.35
docker run --name xiaohe-mysql -e MYSQL_ROOT_PASSWORD=your-root -d -p 3306:3306 -v ~/mysql_data:/var/lib/mysql mysql:5.7.35 --character-set-server=utf8mb4 --log-bin=mysql-bin --binlog-format=ROW --server_id=1
这里启动了一个MySQL实例, 数据放在了 ~/data 目录,然后暴露服务在 3306.同时打开了binlog .
做本地测试时,还需要简单的表,这里再给出一个DDL:
CREATE TABLE `teacher` (
`id` bigint(20) NOT NULL,
`name` varchar(45) NOT NULL,
`sex` tinyint(4) NOT NULL,
`flag` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
一、搭建redis集群
第一步: 创建自定义的网络,名字叫 redis-net
docker network create redis-net --subnet 172.38.0.0/16
第二步:利用脚本,自动化创建配置文件 【注意这个脚本实现了一个批量创建文件、然后写入内容的功能,shell 还是挺犀利的】
for index in $(seq 1 6);
do
mkdir -p /mydata/redis/node-${index}/conf
touch /mydata/redis/node-${index}/conf/redis.conf
cat <<EOF > /mydata/redis/node-${index}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${index}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
第三步: 拉起容器
for index in $(seq 1 6);
do
docker run -p 637${index}:6379 -p 1637${index}:16379 --name redis-${index} \
-v /mydata/redis/node-${index}:/data \
-v /mydata/redis/node-${index}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis-net --ip 172.38.0.1${index} redis redis-server /etc/redis/redis.conf
done
第五步:进入任意一台容器,创建集群
[root@localhost home]# docker exec -it redis-1 /bin/bash
root@263467f705b2:/data# ls
appendonly.aof conf nodes.conf
root@263467f705b2:/data# redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
.......
第六步:连接集群 【在其中一个容器内】
root@263467f705b2:/data# redis-cli -c
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
二、搭建应用集群
1、写个Springboot demo (比如只有一个controller,只返回hello 字符串)
2、打包
打成一个 jar
3、写dockerfile
第一句: 表示使用 java8作为基础镜像
FROM java:8
WORKDIR /usr/app
# COPY *.jar hello.jar
ADD hello-world-0.0.1-SNAPSHOT.jar app.jar
# CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar"]
CMD ["app.jar"]
4、打镜像
docker build -t xiaohe-hello .
5、 run
6、测试