netcore3.1 webApi项目发布Docker后,通过容器互联,访问redis 【部署redis到docker】

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

接着上篇博客继续,上篇博客:netcore 3.1 项目部署到docker 及遇到的各种坑 和 对应解决方案

上篇博客中,成功将webApi项目部署到了docker,且可以通过swagger进行访问,由于项目中使用了redis,因此,我们需要在docker上部署redis,部署redis后,我们还必须实现webapi容器可以访问redis容器

目前,我们通过一个webApp镜像,生成了3个webApp 容器,分别为:webApp01、webApp02、webApp03

如下:

 下面,我们先从部署Redis到Docker开始

部署redis到docker

1.获取 redis 镜像

docker pull redis

2.查看本地镜像

 
docker images

3. 下载redis.conf 配置文件

http://www.redis.cn/download.html下载redis的压缩包,获取里面的redis.conf文件

下载的文件是tar.gz的文件,直接在Windows系统解压,目录如下:

4.配置redis.conf配置文件

打开此文件,进行修改,主要修改部分如下:

#bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问。若不设置,无法远程
requirepass 密码 #给redis设置密码,若不设置则不用改
appendonly yes#redis持久化  默认是no 【开启AOF持久化功能】

5.创建本地映射的目录

以/tmp为根目录进行说明。创建目录:

cd /tmp
mkdir redis
mkdir redis/data

创建后把修改好的redis.conf文件拷贝到虚拟机的/tmp/redis目录下。

6.启动redis

docker run -p 6379:6379 --name redis01 --restart=always -v /tmp/redis/redis.conf:/etc/redis/redis.conf  -v /tmp/redis/data:/data  --net mynet -d redis redis-server /etc/redis/redis.conf

说明:

-p 暴露linux 6379端口,并 和 容器内6379端口映射

--name redis 容器名称

--restart=always  是指 容器随着docker的启动而启动,这样就无须再手动开启

-v 路径挂载, 一个挂载redis的配置文件,一个挂载redis的持久化data数据,防止容器删除后,redis数据丢失,达到数据可还原的目的,关于目录文件挂载可参考:https://www.cnblogs.com/chenwolong/p/16107903.html

--net 这里使用自定义的网络 mynet 关于自定义网络,可参考:docker 自定义网络 不使用 --link 也能实现容器间网络互通

-d 代表后台运行 redis

redis-server /etc/redis/redis.conf:按配置启动

此时,Redis 已经在运行了

 docker容器的默认路径为:ls /var/lib/docker/containers

ls /var/lib/docker/containers

 7、访问REdis

查看Ip地址:

ip addr

C:\Redis-x64-5.0.9>redis-cli -h 192.168.136.135 -p 6379
192.168.136.135:6379> set k1 v1
OK
192.168.136.135:6379> keys *
1) "k1"
192.168.136.135:6379>

说明,redis 可以正常访问了

镜像启动web

然后,我们设置:webApp01、 容器拥有访问 mynet 网络的权限,可参考:docker 自定义网络 不使用 --link 也能实现容器间网络互通

[root@localhost data]# docker network connect mynet webapp01    -- 允许webapp01 访问mynet网络,因为redis 使用的是mynet网络,因此就实现了webapp01容器 访问 redis 容器的权限

有了访问权限,我们就可以通过 容器名称进行网络互连了。

因此,我们修改netCore配置文件如下【因为我们采用的默认端口,6379 可以不加】:

  "RedisOptions": {
    "RedisConnectionString": "redis01", // redis01:6379 是我的容器名称
    "RedisDbNum": 2, //REdis 数据库
    "IotRedisDbNum": 1 //物联网--REdis 数据库
  }

这样我们就可以访问redis 了

 

最后,说下

                 docker 容器默认所在的主机目录为: /var/lib/docker/containers

cd /var/lib/docker/containers

 

@天才卧龙的博客

posted @ 2022-04-14 15:43  天才卧龙  阅读(442)  评论(0编辑  收藏  举报