最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker環(huán)境中Redis連接三種場景的配置指南

 更新時間:2026年06月02日 08:46:58   作者:取經(jīng)蝸牛  
本指南詳細說明如何將docker項目原本redis服務(wù)連接到 三種不同位置的 Redis 服務(wù),并屏蔽項目自帶的 Redis 容器,需要的朋友可以參考下

所有操作前請備份 docker-compose.yml 和 .env 文件。

場景一:連接到 Ubuntu 物理機上的 Redis

適用情況:Redis 直接安裝在宿主機(獨立的 Ubuntu 物理機或虛擬機)上,Docker 運行在該宿主機上。

1. 檢查宿主機 Redis 配置

確保宿主機 Redis 允許 Docker 容器訪問(默認只監(jiān)聽 127.0.0.1):

# 查看監(jiān)聽地址
sudo netstat -tlnp | grep 6379

如果只顯示 127.0.0.1:6379,請修改 /etc/redis/redis.conf

bind 0.0.0.0          # 允許所有連接
# 或 bind 127.0.0.1 172.17.0.1   # 僅允許 Docker 網(wǎng)橋

重啟 Redis:

sudo systemctl restart redis-server

2. 修改docker-compose.yml

2.1 刪除內(nèi)部 Redis 服務(wù)

找到文件中的 redis: 塊(約第 158 行),刪除或注釋。

2.2 刪除app服務(wù)中的 Redis 依賴

app 服務(wù)的 depends_on: 中刪除 redis: 條目。

2.3 修改app的環(huán)境變量

app:
  environment:
    # 將 REDIS_ADDR 改為宿主機 IP(Docker 網(wǎng)橋網(wǎng)關(guān))
    - REDIS_ADDR=172.17.0.1:6379
    # 如果宿主機 Redis 有密碼,確保 .env 中 REDIS_PASSWORD 正確
    - REDIS_PASSWORD=${REDIS_PASSWORD}
    - REDIS_DB=0

說明172.17.0.1 是 Docker 默認網(wǎng)橋的網(wǎng)關(guān)地址,始終指向宿主機。也可以使用宿主機的物理 IP(如 192.168.1.100),但可能因 DHCP 變化而不穩(wěn)定。

2.4 確保.env中的密碼匹配

REDIS_PASSWORD=your_redis_password

3. 重新部署

docker compose down
docker compose up -d

4. 驗證

# 進入 app 容器測試(容器內(nèi)可能沒有 nc/redis-cli,可用 Python)
docker exec WeKnora-app python3 -c "import socket; s=socket.socket(); s.connect(('172.17.0.1',6379)); print('OK')"

場景二:連接到 WSL 環(huán)境中的 Redis 服務(wù)

適用情況:Docker 運行在 WSL2 的 Linux 發(fā)行版中,Redis 安裝在同一個 WSL 實例內(nèi)(作為宿主機)。

說明:在 WSL 環(huán)境中,Docker 容器與 WSL 宿主機共享內(nèi)核,但網(wǎng)絡(luò)棧是隔離的。容器訪問 WSL 宿主機的服務(wù)需要使用 WSL 實例的 IP 或 Docker 網(wǎng)關(guān) IP。

1. 檢查 WSL 中 Redis 的監(jiān)聽配置

WSL 中的 Redis 默認只監(jiān)聽 127.0.0.1,需要修改為監(jiān)聽 0.0.0.0 或至少 Docker 網(wǎng)橋 IP:

sudo vi /etc/redis/redis.conf

修改:

bind 0.0.0.0

重啟 Redis:

sudo systemctl restart redis-server

2. 修改docker-compose.yml

2.1 刪除內(nèi)部 Redis 服務(wù)及依賴(同場景一)

2.2 修改app環(huán)境變量

WSL 中有兩種可靠的地址:

地址說明
172.17.0.1Docker 網(wǎng)橋網(wǎng)關(guān),始終可達
host.docker.internal需要 extra_hosts 支持(你的配置已添加)

推薦使用 172.17.0.1

app:
  environment:
    - REDIS_ADDR=172.17.0.1:6379
    - REDIS_PASSWORD=${REDIS_PASSWORD}
    - REDIS_DB=0

如果希望使用 host.docker.internal(你的 extra_hosts 已配置),也可:

- REDIS_ADDR=host.docker.internal:6379

3. 重新部署并驗證

docker compose down
docker compose up -d

# 測試連通性
docker exec WeKnora-app sh -c "echo 'PING' | timeout 2 nc 172.17.0.1 6379"

場景三:連接到指定 Docker 容器中的 Redis 服務(wù)

適用情況:已有一個獨立的 Redis 容器(如 xiaozhi-esp32-server-redis),希望 WeKnora 共用。

1. 確認外部 Redis 容器信息

docker ps | grep redis

記下容器名(例如 xiaozhi-esp32-server-redis)及其密碼(通過查看啟動命令或進入容器獲取)。

2. 將外部 Redis 容器加入 WeKnora 的項目網(wǎng)絡(luò)

WeKnora 項目使用自定義網(wǎng)絡(luò) WeKnora-network(實際名稱可能帶項目前綴)。先查看實際網(wǎng)絡(luò)名:

docker network ls | grep WeKnora
# 假設(shè)輸出:weknora-main_WeKnora-network

連接外部容器到該網(wǎng)絡(luò):

docker network connect weknora-main_WeKnora-network xiaozhi-esp32-server-redis

3. 修改docker-compose.yml

3.1 刪除內(nèi)部 Redis 服務(wù)及依賴(同前)

3.2 修改app環(huán)境變量

app:
  environment:
    - REDIS_ADDR=xiaozhi-esp32-server-redis:6379   # 使用容器名
    - REDIS_PASSWORD=${REDIS_PASSWORD}             # 必須與外部 Redis 密碼一致
    - REDIS_DB=0

3.3 如果外部 Redis 有密碼,更新.env

REDIS_PASSWORD=external_redis_password

4. 重新部署并驗證

docker compose down
docker compose up -d

# 驗證 DNS 解析和連接
docker exec WeKnora-app ping -c 1 xiaozhi-esp32-server-redis
docker exec WeKnora-app python3 -c "import socket; s=socket.socket(); s.connect(('xiaozhi-esp32-server-redis',6379)); print('OK')"

通用注意事項

  1. 刪除內(nèi)部 Redis 后,docker-compose.ymlredis: 整個塊必須刪除或注釋,否則 Compose 仍會創(chuàng)建容器。
  2. 依賴關(guān)系:務(wù)必刪除 app 服務(wù)的 depends_on 中的 redis: 條目,否則啟動時會等待不存在的服務(wù)。
  3. 密碼一致性:外部 Redis 如有密碼,.env 中的 REDIS_PASSWORD 必須完全一致(包括大小寫、特殊字符)。無密碼則留空:REDIS_PASSWORD=。
  4. 數(shù)據(jù)庫編號:通過 REDIS_DB 選擇數(shù)據(jù)庫,默認為 0。如果外部 Redis 的 DB0 已被其他應(yīng)用占用,可改為 1,但需確保 WeKnora 支持。
  5. Langfuse 等可選服務(wù):如果啟用了 --profile langfuse--profile fulllangfuse-workerlangfuse-web 也依賴 Redis,它們通過 REDIS_CONNECTION_STRING 連接,需要同步修改。如果未啟用,可忽略。
  6. 網(wǎng)絡(luò)穩(wěn)定性
    • 場景一、二中,宿主機 IP(172.17.0.1)在 Docker 重啟后可能改變(極少見),建議使用 host.docker.internal(需 extra_hosts 支持,你的配置已提供)。
    • 場景三中,容器名解析依賴 Docker 內(nèi)置 DNS,只要容器在同一網(wǎng)絡(luò)即可。
  7. 安全建議
    • 避免將 Redis 暴露到公網(wǎng)。
    • 生產(chǎn)環(huán)境務(wù)必設(shè)置強密碼,并考慮使用 Docker 網(wǎng)絡(luò)隔離。

附錄:快速比對表

場景REDIS_ADDR需要額外操作驗證命令
物理機 Redis172.17.0.1:6379宿主機IP修改 Redis 監(jiān)聽 0.0.0.0docker exec WeKnora-app python3 -c "import socket; socket.create_connection(('172.17.0.1',6379),2)"
WSL 中 Redis172.17.0.1:6379host.docker.internal:6379修改 Redis 監(jiān)聽 0.0.0.0同上
外部 Redis 容器<容器名>:6379將容器加入 WeKnora-networkdocker exec WeKnora-app sh -c "echo PING | nc <容器名> 6379"

以上就是Docker環(huán)境中Redis連接三種場景的配置指南的詳細內(nèi)容,更多關(guān)于Docker Redis連接的三種場景的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • docker的具名掛載與匿名掛載實現(xiàn)

    docker的具名掛載與匿名掛載實現(xiàn)

    本文主要介紹了docker的具名掛載與匿名掛載實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Dockerfile的使用及docker部署java項目實踐

    Dockerfile的使用及docker部署java項目實踐

    Docker通過Dockerfile構(gòu)建自定義鏡像,簡化部署流程,主要指令包括FROM、RUN、CMD、ENTRYPOINT、ENV、ADD、COPY、VOLUME、WORKDIR和USER,構(gòu)建Java環(huán)境需準備目錄、Dockerfile、JDK和jar文件,執(zhí)行構(gòu)建命令并驗證部署
    2026-03-03
  • docker如何查看容器/刪除(所有)容器/刪除鏡像

    docker如何查看容器/刪除(所有)容器/刪除鏡像

    這篇文章主要介紹了docker如何查看容器/刪除(所有)容器/刪除鏡像問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Docker 部署net5程序?qū)崿F(xiàn)跨平臺功能

    Docker 部署net5程序?qū)崿F(xiàn)跨平臺功能

    本文講述使用docker容器部署.net5項目、實現(xiàn)跨平臺,本文通過圖文的形式給大家介紹了創(chuàng)建.net5項目的過程及安裝成功后如何使用docker部署項目,感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2021-05-05
  • docker配置skywalking 監(jiān)控springcloud應(yīng)用的詳細步驟

    docker配置skywalking 監(jiān)控springcloud應(yīng)用的詳細步驟

    本文分步驟給大家講解docker配置skywalking 監(jiān)控springcloud應(yīng)用的方法,感興趣的朋友一起看看吧
    2025-04-04
  • Docker刪除某個鏡像的實現(xiàn)方法

    Docker刪除某個鏡像的實現(xiàn)方法

    在使用 Docker 時,經(jīng)常需要刪除不再需要的鏡像、容器和卷,以釋放存儲空間,本文主要介紹了Docker刪除某個鏡像的實現(xiàn)方法,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • jenkins如何進行自動化部署

    jenkins如何進行自動化部署

    這篇文章主要介紹了jenkins如何進行自動化部署問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Linux下Docker CE使用從包中安裝的方式詳解

    Linux下Docker CE使用從包中安裝的方式詳解

    這篇文章主要為大家詳細介紹了Linux下Docker CE使用從包中安裝的方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Docker?desktop中文設(shè)置方法步驟

    Docker?desktop中文設(shè)置方法步驟

    這篇文章主要給大家介紹了關(guān)于Docker?desktop中文設(shè)置的方法步驟,Docker Desktop默認使用英文界面,要設(shè)置為中文界面,請按照以下步驟操作,需要的朋友可以參考下
    2024-03-03
  • docker客戶端訪問harbor及安裝配置更新

    docker客戶端訪問harbor及安裝配置更新

    這篇文章主要介紹了docker客戶端訪問harbor以及harbor的安裝配置更新步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12

最新評論

宣威市| 大田县| 平度市| 南开区| 怀来县| 海原县| 镶黄旗| 启东市| 徐闻县| 洛川县| 湟中县| 石景山区| 定边县| 昌都县| 萝北县| 玉林市| 迁安市| 古田县| 自治县| 鲁甸县| 游戏| 萝北县| 建德市| 新河县| 孝昌县| 皮山县| 浦北县| 延长县| 全州县| 陕西省| 丰镇市| 大庆市| 彰化县| 农安县| 惠东县| 健康| 富民县| 桐柏县| 揭东县| 汕头市| 获嘉县|