1. 程式人生 > 其它 >netcore3.1 webApi專案釋出Docker後,通過容器互聯,訪問redis 【部署redis到docker】 netcore 3.1 專案部署到docker 及遇到的各種坑 和 對應解決方案

netcore3.1 webApi專案釋出Docker後,通過容器互聯,訪問redis 【部署redis到docker】 netcore 3.1 專案部署到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 -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 容器名稱

-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 已經在運行了

 

 

 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 可以正常訪問了

然後,我們設定:webApp01、webApp02、webApp03 三個容器擁有訪問 mynet 網路的許可權,可參考:docker 自定義網路 不使用 --link 也能實現容器間網路互通

[root@localhost data]# docker network connect mynet webapp01    -- 允許webapp01 訪問mynet網路,因為redis 使用的是mynet網路,因此就實現了webapp01容器 訪問 redis 容器的許可權
[root@localhost data]# docker network connect mynet webapp02
[root@localhost data]# docker network connect mynet webapp03

未完繼續....

@天才臥龍的部落格