Docker学习(六)docker部署Redis集群、docker部署第一个springboot项目

Docker

在这里插入图片描述


一、Redis集群

我们模拟 分片+高可用+负载均衡 这样一个场景:三主三从

在这里插入图片描述

1. 创建网卡

docker network create redis --subnet 172.38.0.0/16
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
6b6cc70f95a7        bridge              bridge              local
8b116f22e9f7        host                host                local
5aa54c4257dd        none                null                local
275bdf35014b        redis               bridge              local

2. 创建6个redis配置文件

通过脚本创建6个redis配置文件

# for 循环6次
for port in $(seq 1 6); \
do \
# 配置文件的目录
mkdir -p /home/chs/chs-files/redis/node-${port}/conf
touch /home/chs/chs-files/redis/node-${port}/conf/redis.conf
cat << EOF >/home/chs/chs-files/redis/node-${port}/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${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

创建完成:

在这里插入图片描述

3. 启动6个redis服务

# 启动第1个redis服务:外部暴露端口号:6371、 卷挂载、 网络为:172.38.0.11
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v /home/chs/chs-files/redis/node-1/data:/data \
-v /home/chs/chs-files/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

# 启动第n个redis服务:
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /home/chs/chs-files/redis/node-${port}/data:/data \
-v /home/chs/chs-files/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

成功启动!

在这里插入图片描述

4. 进入容器

docker exec -it redis-1 /bin/sh

在这里插入图片描述

5. 创建集群

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

创建时选择 yes 即可。

在这里插入图片描述

连接redis,查看信息:

# 集群连接
redis-cli -c
# 查看信息
cluster info

在这里插入图片描述

6. 测试

  1. 我们创建一个k,v

在这里插入图片描述
可以发现是 redis-3 处理了我们的命令

  1. 此时我们模拟redis-3宕机,直接停掉 redis-3 容器,查看刚才的k1,是否可以获得?
[root@localhost ~]# docker stop redis-3
redis-3

我们可以发现,从redis-4获得了k1!!

在这里插入图片描述

  1. 查看nodes:

在这里插入图片描述
信息:redis-3 fail了,redis-4代替了redis-3为master!

二、SpringBoot微服务打包Docker镜像

1. 创建SpringBoot项目

在这里插入图片描述
随便编写一个简单的controller:

@RestController
public class Test {

    @RequestMapping("/hello")
    public String hello(){
        return "-----Hello-----";
    }
}

本地访问测试成功。

在这里插入图片描述

2. 打包应用

使用maven package 打包项目即可。

在这里插入图片描述

3. 编写Dockerfile

在这里插入图片描述
Dockerfile:

FROM java:8

COPY *.jar /app.jar

CMD ["server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

可以在IDEA中下载一个插件:docker integration,编写Dockerfile文件更方便!

4. 执行Dockerfile文件

将我们的jar包和Dockerfile上传到linux,使用docker容器进行部署

在这里插入图片描述
build镜像:

docker build -t code-chen-springboot .

镜像构建成功:

在这里插入图片描述

用上面构建成功的镜像启动一个容器:

docker run -d -P --name my-test-springboot code-chen-springboot

5. 测试访问

查看docker ps,然后使用命令 curl localhot:端口号 访问测试即可,我们再测试一下接口(curl localhot:端口号/hello):

在这里插入图片描述
成功返回数据!!

//下篇再见…谢谢
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值