Docker Compose 之詳解(Detailed Explanation of Docker Compose)

?Docker Compose 之詳解

當容器數量逐漸增多,你是否感到手忙腳亂?面對復雜的部署場景,是時候祭出神器Docker Compose了!它能幫你優雅地管理多容器應用,一鍵啟動、停止所有服務,不再為復雜的手動操作焦頭爛額。


什么是 Docker Compose?

Docker Compose?是 Docker 官方提供的多容器管理工具,允許你通過一個簡單的 YAML 配置文件定義和管理多容器服務。
它的核心功能包括:

  1. 定義多容器:通過一個docker-compose.yml?文件描述多個服務的構建方式、網絡配置和依賴關系。

  2. 一鍵管理:啟動、停止、重啟和查看服務日志都可以通過一條命令完成。

  3. 跨環境部署:支持開發、測試和生產環境的靈活配置。


為什么要用 Docker Compose?

  1. 多容器協作的利器
    當你的項目依賴多個容器(如 Web 服務 + 數據庫 + 緩存),Compose 可以一鍵啟動并連接它們。

  2. 高效的開發體驗
    不再需要記住復雜的docker run?參數;通過 Compose,所有配置都在一個文件里。

  3. 簡化部署
    無論是本地開發環境還是遠程服務器,一份docker-compose.yml?文件搞定部署。

  4. 減少重復勞動
    每次需要啟動服務時,不再需要重復輸入一大堆命令。


安裝 Docker Compose

以下是在 CentOS 下安裝 Docker Compose 的步驟:

  1. 下載二進制文件

?sudo curl -L?"https://github.com/docker/compose/releases/download/2.22.0/docker-compose-$(uname -s)-$(uname -m)"?-o /usr/local/bin/docker-compose
  1. 賦予執行權限

?sudo chmod +x /usr/local/bin/docker-compose
  1. 驗證安裝

?docker-compose --version

輸出類似:Docker Compose version 2.22.0,表示安裝成功。


用 Docker Compose 梭哈一個完整項目

項目場景:Java Web 應用 + MySQL + Redis

當你的項目需要同時運行 Java 應用、MySQL 數據庫和 Redis 緩存時,一個簡單的docker-compose.yml?文件就可以解決問題。

目錄結構:

my-project/
├── app/
│ ? ├── Dockerfile
│ ? └── target/demo.jar
├── db/
│ ? └── init.sql
├── redis/
│ ? └── redis.conf
└── docker-compose.yml

docker-compose.yml?文件:

version:?'3.8'services:
app:build:context:./appports:-"8080:8080"environment:-SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/demo-SPRING_DATASOURCE_USERNAME=root-SPRING_DATASOURCE_PASSWORD=root-SPRING_REDIS_HOST=redisdb:image:mysql:5.7ports:-"3306:3306"environment:MYSQL_ROOT_PASSWORD:rootMYSQL_DATABASE:demovolumes:-./db/init.sql:/docker-entrypoint-initdb.d/init.sqlredis:image:redis:7.0ports:-"6379:6379"volumes:-./redis/redis.conf:/usr/local/etc/redis/redis.confcommand:["redis-server","/usr/local/etc/redis/redis.conf"]
啟動項目

在項目目錄下運行以下命令:

docker-compose up --build

一條命令即可啟動 Java Web 應用、MySQL 和 Redis 三個服務。


一鍵管理多容器

Docker Compose 提供了一系列便捷命令:

  1. 啟動所有服務

?docker-compose up
  1. 停止所有服務

?docker-compose down
  1. 重啟指定服務

?docker-compose restart app
  1. 查看服務日志

?docker-compose logs -f

使用 Docker Compose 的注意事項

  1. 容器間通信
    Docker Compose 會自動為所有服務創建一個默認網絡,服務之間可以通過名稱互相訪問。

  2. 數據持久化
    確保數據庫等重要數據使用掛載卷(volumes),避免容器重啟后數據丟失。

  3. 資源分配
    在生產環境中,可以通過deploy?配置限制 CPU 和內存使用量。

  4. 環境變量管理
    使用.env?文件集中管理敏感信息,例如數據庫密碼。


總結

當項目需要多個容器協同工作時,Docker Compose 是最值得信賴的“梭哈”工具。它讓開發者從繁瑣的手動操作中解放出來,將多容器管理變得簡單高效。不妨試試為你的項目編寫一個docker-compose.yml?文件,體驗一下“一鍵部署”的快感!

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

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

相關文章

C語言 —— 此去經年夢浪蕩魂音 - 深入理解指針(卷一)

目錄 1. 內存和地址 2. 指針變量和地址 2.1 取地址操作符(&) 2.2 指針變量 2.3 解引用操作符 (*) 3. 指針的解引用 3.1 指針 - 整數 3.2 void* 指針 4. const修飾指針 4.1 const修飾變量 4.2 const修飾指針變量 5…

【AI】從頭到腳詳解如何創建部署Azure Web App的OpenAI項目

【AI】從頭到腳詳解如何創建部署Azure Web App的OpenAI項目 在Azure Web應用上,您可以使用Python的OpenAI包方便快捷地調用官方API,上傳您的訓練數據,并利用他們的算法進行處理。本教程提供了一個逐步指南,幫助您在Azure Web應用上部署您的OpenAI項目,涵蓋了從資源設置到…

機器視覺工程師紅外相機的選擇:紅外長波工業相機和短波紅外工業相機玄機大總結

紅外長波(LWIR)和短波(SWIR)工業相機在原理、應用場景和技術特點上有顯著差異。以下是它們的對比分析: 1. 波長范圍與成像原理 2. 技術特點 3. 典型應用場景 4. 優缺點對比 LWIR優勢: 無需光照,適用于完全黑暗環境。 直接反映物體溫度分布。 對煙霧、灰塵穿透能力強。…

uni-app學習筆記——自定義模板

一、流程 1.這是一個硬性的流程,只要按照如此程序化就可以實現 二、步驟 1.第一步 2.第二步 3.第三步 4.每一次新建頁面,都如第二步一樣;可以選擇自定義的模版(vue3Setup——這是我自己的模版),第二步的…

DeepSeek模型本地化部署方案及Python實現

DeepSeek實在是太火了,雖然經過擴容和調整,但反應依舊不穩定,甚至小圓圈轉半天最后卻提示“服務器繁忙,請稍后再試。” 故此,本文通過講解在本地部署 DeepSeek并配合python代碼實現,讓你零成本搭建自己的AI…

Vue3計算屬性深度解析:經典場景與Vue2對比

一、計算屬性的核心價值 計算屬性(Computed Properties)是Vue響應式系統的核心特性之一,它通過依賴追蹤和緩存機制優雅地解決模板中復雜邏輯的問題。當我們需要基于現有響應式數據進行派生計算時,計算屬性總能保持高效的性能表現…

python-leetcode-刪除鏈表的倒數第 N 個結點

LCR 021. 刪除鏈表的倒數第 N 個結點 - 力扣(LeetCode) 可以使用雙指針方法來解決這個問題,這樣可以在一次遍歷內完成刪除操作,從而達到 O(n) 的時間復雜度。以下是 Python 代碼實現: 解題思路: 初始化快…

vue2的webpack(vue.config.js) 怎么使用請求轉發 devServer.proxy

首先用 express 搭建后端服務器,注意使用中間件解析json格式的請求體,才會獲取到 post 參數 app.use(express.json()); app.js const express require(express) const app express() app.use(express.json()); const port 3000app.post(/api/vue2, …

Linux:基本指令與內涵理解

1.文件操作指令 1.1 ls ls指令用于查看指定層級文件夾下的文件或文件夾 基本格式:ls (選項) (查看層級) 其中選項處不寫就默認是顯示文件名,查看層級默認是當前層級 選項1: -l 作用:將查找文件的詳細信息顯示出來 我們…

SpaceSync智能排班:重構未來辦公空間的神經中樞

文心智能體平臺可免費使用DeepSeek 滿血版啦,使用DeepSeek模型創建并提交智能體,即有機會瓜分萬元獎金!有這等好事還不快沖! 文心智能體官網:文心智能體平臺AgentBuilder | 想象即現實 本片文章為作者參加文心智能體平…

flutter dio庫 源碼賞析

1. factory函數 //調用factory構造方法后,實際返回的是Dio的子類 Dio dio Dio();abstract class Dio {factory Dio([BaseOptions? options]) > createDio(options); } 2. CancelToken 作用:取消操作 CancelToken cancelToken CancelToken();//監聽取消 ca…

RGV調度算法

1、基于時間窗 https://wenku.baidu.com/view/470e9fd8b4360b4c2e3f5727a5e9856a57122693.html?_wkts_1741880736197&bdQuery%E7%8E%AF%E7%A9%BF%E8%B0%83%E5%BA%A6%E7%AE%97%E6%B3%95 2.2019年MathorCup高校數學建模挑戰賽B題 2019-mathorcupB題-環形穿梭機調度模型&a…

基于CATIA VBA與Python的自動化音樂生成技術對比研究

在工程軟件二次開發領域,CATIA 也可以許多另類的玩法。通過CATIA自帶的VBA可以演奏歌曲,但實際效果往往差強人意。為了進一步優化實際演奏效果,本文以自動生成林宥嘉《說謊》鋼琴前奏旋律為案例,探討兩種語言在多媒體控制領域的技…

最大數位置(信息學奧賽一本通-2038)

【題目描述】 輸入n個整數,存放在數組a[1]至a[n]中,輸出最大數所在位置(n≤1000)。 【輸入】 第一行,數的個數n; 第二行,n個正整數,每個數在232?1之內。 【輸出】 最大數所在位置。 【輸入樣例】 5 67 43 90 78 32 【輸出樣例】 …

【AIGC】OpenAI 集成 Langchain 操作實戰使用詳解

目錄 一、前言 二、前置準備 2.1 安裝 Langchain必須的依賴 2.1.1 python環境 2.1.2 langchain openai 環境 2.1.3 準備一個apikey 2.1.4 langchain 核心組件 三、Langchain 各組件使用 3.1 Chat models組件 3.1.1 Invocation 使用 3.1.1.1 結果解析 3.2 提示詞模板…

【C#學習筆記04】深入掌握C語言格式化輸出

引言 ??printf()??函數不僅可以將數據輸出到控制臺,還可以通過格式化字符串靈活地控制輸出的格式。??printf()???函數的使用規則,包括標志說明、字段寬度、轉換精度、長度修飾、轉換說明、轉義字符和返回結果等內容。 1. ??printf()??函數…

python-leetcode-定長子串中元音的最大數目

1456. 定長子串中元音的最大數目 - 力扣(LeetCode) 可以使用 滑動窗口 方法來解決這個問題。步驟如下: 初始化:計算前 k 個字符中元音字母的個數,作為初始窗口的值。滑動窗口:遍歷字符串,每次右…

藍橋真題講解

第一題 題目鏈接 0貪吃蛇長度 - 藍橋云課 題目解析 題意:數#個數和個數再加上首尾 代碼原理 略 代碼編寫 略 填空題技巧 眼看手數 當然并不是真的一個一個數,我們需要借助一些工具,不過各位小伙伴們放心,我們借助的工具…

【C++ 函數模板】—— 模板參數推導、實例化策略與編譯優化

歡迎來到ZyyOvO的博客?,一個關于探索技術的角落,記錄學習的點滴📖,分享實用的技巧🛠?,偶爾還有一些奇思妙想💡 本文由ZyyOvO原創??,感謝支持??!請尊重原創&#x1…

Java基礎入門流程控制全解析:分支、循環與隨機數實戰

引言 流程控制是編程語言的核心邏輯結構,決定了程序的執行順序與邏輯判斷能力。本文以 分支結構、循環結構 和 隨機數生成 為核心,結合代碼示例與底層原理,全面解析Java中流程控制的應用場景與實戰技巧。 一、分支結構 1. if分支 作用&am…