使用 Docker Compose 簡化 INFINI Console 與 Easysearch 環境搭建

前言回顧

在上一篇文章《搭建持久化的 INFINI Console 與 Easysearch 容器環境》中,我們詳細介紹了如何使用基礎的 docker run 命令,手動啟動和配置 INFINI Console (1.29.6) 和 INFINI Easysearch (1.13.0) 容器,并實現了關鍵數據的持久化,解決了重啟后配置丟失的問題。

手動操作雖然能讓我們深入理解 Docker 的核心機制,但在管理多個容器、網絡和卷時,命令會變得冗長且容易出錯。這時,Docker Compose 就派上了用場。它允許我們使用一個 YAML 文件來定義和運行多容器 Docker 應用程序。

本篇文章將演示如何將上一篇的手動步驟轉換為使用 Docker Compose,讓你更輕松地管理和維護這套本地開發測試環境。

Docker Compose 的優勢

使用 Docker Compose 帶來了諸多好處:

  • 聲明式配置:在一個 docker-compose.yml 文件中定義所有服務、網絡和卷,清晰明了。
  • 一鍵式管理:使用簡單的命令(如 docker compose up, docker compose down)即可啟動、停止和重建整個應用環境。
  • 簡化網絡和服務連接:Compose 會自動處理服務間的網絡設置和依賴關系。
  • 易于共享和版本控制docker-compose.yml 文件可以輕松地與團隊共享并通過版本控制系統(如 Git)進行管理。

準備工作

與上一篇類似,你需要:

  • 操作系統: macOS (本文示例)
  • Docker 環境: OrbStack (https://orbstack.dev/) 或 Docker Desktop for Mac。
  • 確保 Docker Compose V2 (docker compose) 或 V1 (docker-compose) 已安裝并可用。

查看 docker compose 版本

docker compose version
Docker Compose version v2.24.5

步驟一:項目目錄結構

我們將繼續使用上一篇文章中創建的目錄結構。如果你還沒有創建,或者想重新開始,可以在你的項目根目錄(例如 ~/infini_compose_lab)下創建如下結構:

# 1. 創建項目根目錄
mkdir -p ~/infini_compose_lab
cd ~/infini_compose_lab# 2. 為 Console 和 Easysearch 創建持久化子目錄
# 這些目錄將用于存儲配置、數據和日志
mkdir -p console/config console/data console/logs
mkdir -p easysearch/config easysearch/data easysearch/logs

步驟二:提取初始配置文件

這一步與上一篇完全相同。你在首次啟動時使用從鏡像中提取的默認配置,請執行以下操作。如果這些目錄中已存在配置文件(例如從上一篇博客的操作中保留下來的),Docker Compose 在掛載時會直接使用它們。

1. INFINI Console (1.29.6) 初始配置
(容器內配置路徑: /config)

# 確保在 ~/infini_compose_lab 目錄下
docker pull infinilabs/console:1.29.6
docker run --rm \
-v $PWD/console/config:/temp_host_config \
infinilabs/console:1.29.6 \
sh -c "cp -a /config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

2. INFINI Easysearch (1.13.0) 初始配置
(容器內配置路徑: /app/easysearch/config,初始密碼: INFINILabs01)

重要提示:請務必為 Easysearch 設置安全的密碼。

# 確保在 ~/infini_compose_lab 目錄下
docker pull infinilabs/easysearch:1.13.0
docker run --rm \
-e EASYSEARCH_INITIAL_ADMIN_PASSWORD="INFINILabs01" \
-v $PWD/easysearch/config:/temp_host_config \
infinilabs/easysearch:1.13.0 \
sh -c "cp -a /app/easysearch/config/. /temp_host_config/ && chmod -R ugo+rw /temp_host_config/"

步驟三:創建 docker-compose.yml 文件

這是核心步驟。在你的項目根目錄 ~/infini_compose_lab 下,創建一個名為 docker-compose.yml 的文件,并填入以下內容。這個文件定義了我們的服務、它們如何運行以及它們如何交互。

cat <<EOF > docker-compose.yml
services:easysearch:image: infinilabs/easysearch:1.13.0container_name: infini-easysearchenvironment:- cluster.name=infini_compose_cluster- node.name=node-01- cluster.initial_master_nodes=node-01- "ES_JAVA_OPTS=-Xms1g -Xmx1g"- EASYSEARCH_INITIAL_ADMIN_PASSWORD=INFINILabs01ports:- "9200:9200"- "9300:9300"volumes:- ./easysearch/config:/app/easysearch/config- ./easysearch/data:/app/easysearch/data- ./easysearch/logs:/app/easysearch/logsulimits:memlock: {soft: -1, hard: -1}nofile: {soft: 65536, hard: 65536}networks:- infini_app_netconsole:image: infinilabs/console:1.29.6container_name: infini-consoleports:- "9000:9000"volumes:- ./console/config:/config- ./console/data:/data- ./console/logs:/lognetworks:- infini_app_netnetworks:infini_app_net:driver: bridge
EOF

docker-compose.yml 文件關鍵點:

  • services: 定義了 easysearchconsole 兩個服務。
  • image: 指定了每個服務使用的 Docker 鏡像和版本。
  • container_name: 為容器指定一個易于識別的名稱。
  • environment: 設置容器的環境變量。
  • Easysearch 單節點配置: 注意 cluster.initial_master_nodes 設置為節點自身的名稱。
  • ports: 將容器的端口映射到宿主機的端口。
  • volumes: 實現持久化的核心。將宿主機當前目錄 (./) 下的 console/*easysearch/* 子目錄分別映射到容器內對應的路徑。
  • networks: 將兩個服務都連接到我們定義的 infini_app_net 網絡。這使得 console 服務可以通過服務名 easysearch (例如 https://easysearch:9200) 來訪問 easysearch 服務。

步驟四:使用 Docker Compose 啟動環境

現在,所有配置都在 docker-compose.yml 文件中了。啟動整個環境只需要一條命令。
~/infini_compose_lab 目錄下(包含 docker-compose.yml 文件),執行:

docker compose up -d
  • docker compose (V2) 或 docker-compose (V1)。
  • up: 創建并啟動在 docker-compose.yml 中定義的所有服務。
  • -d: 后臺模式運行。

首次運行時,如果本地沒有對應的鏡像,Docker Compose 會自動拉取。

常用 Docker Compose 命令:

  • 查看服務狀態:
docker compose ps
  • 查看所有服務的實時日志:
docker compose logs -f
  • 查看特定服務的日志:
docker compose logs -f console
docker compose logs -f easysearch
  • 停止所有服務(保留數據):
docker compose stop
  • 停止并移除所有容器、網絡和匿名卷(保留通過 volumes 映射的本地數據):
docker compose down

步驟五:驗證和使用

  1. 訪問 Console: 瀏覽器打開 http://localhost:9000
  2. 進行配置: 在 Console 中連接 Easysearch (https://easysearch:9200,因為它們在同一個 Docker 網絡中,可以直接使用服務名),創建用戶,查看監控等。
  3. 測試持久化:
docker compose down # 停止并移除容器
# 稍等片刻
docker compose up -d # 重新啟動

再次訪問 http://localhost:9000,你會發現之前的配置都還在!

操作截圖

徹底清理,包括刪除命名卷(如果使用了的話)和本地數據(可選)

# -v 移除命名卷
docker compose down -v
# 然后手動刪除本地持久化目錄
rm -rf ~/infini_compose_lab/console
rm -rf ~/infini_compose_lab/easysearch

總結

通過 Docker Compose,我們用一個簡潔的 docker-compose.yml 文件取代了之前冗長的 docker run 命令,極大地簡化了 INFINI Console 和 Easysearch 本地環境的搭建和管理過程。同時,通過正確的卷掛載配置,我們依然確保了數據的持久化,解決了重啟后配置丟失的問題。

對于開發、測試和快速原型驗證,Docker Compose 無疑是一個強大而高效的工具。希望本教程能幫助你更輕松地使用 INFINI Console 進行本地實驗和開發!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88242.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88242.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88242.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Word 怎么讓段落對齊,行與行之間寬一點?

我們來分兩步解決&#xff1a;段落對齊 和 調整行距。 這兩個功能都集中在Word頂部的【開始】選項卡里的【段落】區域。 第一步&#xff1a;讓段落對齊 “對齊”指的是段落的左右邊緣如何排列。通常有四種方式。 操作方法&#xff1a;將鼠標光標點在你想修改的那個段落里的任意…

Attention機制完全解析:從原理到ChatGPT實戰

一、Attention的本質與計算步驟 1.1 核心思想 動態聚焦&#xff1a;Attention是一種信息分配機制&#xff0c;讓模型在處理輸入時動態關注最重要的部分。類比&#xff1a;像人類閱讀時用熒光筆標記關鍵句子。 1.2 計算三步曲&#xff08;以"吃蘋果"為例&#xff09; …

2025年3月青少年電子學會等級考試 中小學生python編程等級考試三級真題答案解析(判斷題)

博主推薦 所有考級比賽學習相關資料合集【推薦收藏】1、Python比賽 信息素養大賽Python編程挑戰賽 藍橋杯python選拔賽真題詳解

HTML5 新特性詳解:從語義化到多媒體的全面升級

很多小伙伴本都好奇&#xff1a;HTML5有什么功能是以前的HTML沒有的&#xff1f; 今天就給大家說道說道 HTML5 作為 HTML 語言的新一代標準&#xff0c;帶來了諸多革命性的新特性。這些特性不僅簡化了前端開發流程&#xff0c;還大幅提升了網頁的用戶體驗和功能性。本文將深入…

mac安裝docker

1、下載docker-desktop https://www.docker.com/products/docker-desktop/2、安裝&#xff0c;雙擊安裝 3、優化docker配置 默認配置 cat ~/Library/Group\ Containers/group.com.docker/settings-store.json {"AutoStart": false,"DockerAppLaunchPath": …

mapbox進階,繪制不隨地圖旋轉的矩形,保證矩形長寬沿屏幕xy坐標方位

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言1.1 ??mapboxgl.Map 地圖對象1.2 ??mapboxgl.Map style屬性1.3 ??line線圖層樣式1.4 ??circle點圖層樣…

${project.basedir}延申出來的Maven內置的一些常用屬性

如&#xff1a;${project.basedir} 是 Maven 的內置屬性&#xff0c;可以被 pom.xml 直接識別。它表示當前項目的根目錄&#xff08;即包含 pom.xml 文件的目錄&#xff09;。 Maven 內置的一些常用屬性&#xff1a; 項目相關&#xff1a; ${project.basedir} <!-- 項…

[特殊字符] Python 批量生成詞云:讀取詞頻 Excel + 自定義背景 + Excel to.png 流程解析

本文展示如何用 Python 從之前生成的詞頻 Excel 文件中讀取詞頻數據&#xff0c;結合 wordcloud 和背景圖&#xff0c;批量生成直觀美觀的詞云圖。適用于文本分析、內容展示、報告可視化等場景。 &#x1f4c2; 第一步&#xff1a;讀取所有 Excel 詞頻文件 import os from ope…

模擬網絡請求的C++類設計與實現

在C開發中&#xff0c;理解和模擬網絡請求是學習客戶端-服務器通信的重要一步。本文將詳細介紹一個模擬HTTP網絡請求的C類庫設計&#xff0c;幫助開發者在不涉及實際網絡編程的情況下&#xff0c;理解網絡請求的核心概念和工作流程。 整體架構設計 這個模擬網絡請求的類庫主要由…

移動機器人的認知進化:Deepoc大模型重構尋跡本質

統光電尋跡技術已逼近物理極限。當TCRT5000傳感器在強烈環境光下失效率超過37%&#xff0c;當PID控制器在路徑交叉口產生63%的決策崩潰&#xff0c;工業界逐漸意識到&#xff1a;導引線束縛的不僅是車輪&#xff0c;更是機器智能的演化可能性。 ?技術破局點出現在具身認知架構…

記錄一次pip安裝錯誤OSError: [WinError 32]的解決過程

因為要使用 PaddleOCR&#xff0c;需要安裝依賴。先通過 conda新建了虛擬環境&#xff0c;然后安裝 PaddlePaddle&#xff0c;繼續安裝 PaddleOCR&#xff0c;上述過程我是在 VSCode的終端中處理&#xff0c;結果報錯如下&#xff1a;Downloading multidict-6.6.3-cp312-cp312-…

后端id設置long類型時,傳到前端,超過19位最后兩位為00

文章目錄一、前言二、問題描述2.1、問題背景2.2、問題示例三、解決方法3.1、將ID轉換為字符串3.2、使用JsonSerialize注解3.3、使用JsonFormat注解一、前言 在后端開發中&#xff0c;我們經常會遇到需要將ID作為標識符傳遞給前端的情況。當ID為long類型時&#xff0c;如果該ID…

SpringAI學習筆記-MCP客戶端簡單示例

MCP客戶端是AI與外部世界交互的橋梁。在AI系統中&#xff0c;大模型雖然具備強大的認知能力&#xff0c;卻常常受限于數據孤島問題&#xff0c;無法直接訪問外部工具和數據源。MCP協議應運而生&#xff0c;作為標準化接口解決這一核心挑戰。該協議采用客戶端-服務端架構&#x…

postgresql|數據庫|系統性能監控視圖pg_stat與postgresql數據庫的調優(備忘)

一、 寫作初衷 通常,我們使用navicat這樣的數據庫圖形管理工具,只能看到用戶層面的表,視圖,而系統層面的表,視圖,函數是無法看到的,這些表,視圖和函數好像也可以稱之為內模式;而這些視圖,函數的作用是非常大的,其中pg_stat 族系統視圖可以得到數據庫的詳細運行信息…

網絡安全護網實戰:攻擊手段解析與防御策略

在網絡安全領域&#xff0c;護網行動中對各類攻擊方式和漏洞原理的掌握至關重要。本文將詳細解析常見的攻擊方式及其背后的漏洞原理&#xff0c;幫助大家提升護網技能。一、常見攻擊方式及漏洞原理1. SQL注入漏洞? 定義&#xff1a;將惡意的數據庫語句注入到后臺數據庫去執行&…

使用alist+RaiDrive+webdav將百度夸克網盤變為本地電腦磁盤方法教程

由于每天都要操作網盤不下十幾次&#xff0c;頻繁啟動網盤比較麻煩。 使用百度夸克網盤的webdav服務可以將百度夸克網盤掛載到本地電腦上&#xff0c;就像操作本地電腦硬盤一樣操作網盤&#xff0c;非常方便。我們以alistraidrive為例演示。 首先打開百度網盤pan.baidu.com&a…

C# 入門學習教程(二)

文章目錄一、操作符詳解1、操作符概覽2、操作符的本質3、操作符的優先級4、同級操作符的運算順序5、 各類操作符的示例二、表達式&#xff0c;語句詳解1. 表達式的定義2. 各類表達式概覽3. 語句的定義4. 語句詳解一、操作符詳解 C# 中的操作符是用于執行程序代碼運算的符號&am…

Linux內核深度解析:IPv4策略路由的核心實現與fib_rules.c源碼剖析

深入探索Linux網絡棧的規則引擎,揭秘策略路由如何通過多級路由表實現復雜流量控制 在Linux網絡棧中,路由決策遠不止簡單的目的地址匹配。策略路由(Policy Routing)允許根據源地址、TOS值、端口等復雜條件選擇不同的路由路徑。本文將深入剖析實現這一功能的核心源碼——net/…

【UE5】虛幻引擎的運行邏輯

UE5的運行邏輯可以分為引擎啟動流程和游戲運行流程兩個部分。引擎啟動流程一、平臺入口&引擎主流程初始化1、系統入口不同的平臺會有不同的入口。在Windows平臺&#xff0c;入口是Launch模塊下的\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp文件中的W…

大數據學習1:Hadoop單機版環境搭建

1.基礎知識介紹 Flume采集日志。Sqoop采集結構化數據&#xff0c;比如采集數據庫。 存儲到HDFS上。 YARN資源調度&#xff0c;每臺服務器上分配多少資源。 Hive是基于Hadoop的一個數據倉庫工具&#xff0c;提供SQL查詢功能&#xff0c;能將SQL語句轉變成MapReduce任務來執行…