• 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

    @天才卧龙的博客

  • 相关阅读:
    Python中把数据存入csv文件
    Python中把字典和值取出来
    scrapy输出请求状态码
    scrapy发送post请求获取cookie
    Python3 Unicode转中文
    Quartus13.0破解方法
    元音字母A的发音规则
    位bit——字节Byte???
    曾经的小孩在努力奔跑!
    如何看懂的时序图?
  • 原文地址:https://www.cnblogs.com/chenwolong/p/dockerredis.html
Copyright © 2020-2023  润新知