?Docker Compose 之詳解
當容器數量逐漸增多,你是否感到手忙腳亂?面對復雜的部署場景,是時候祭出神器Docker Compose了!它能幫你優雅地管理多容器應用,一鍵啟動、停止所有服務,不再為復雜的手動操作焦頭爛額。
什么是 Docker Compose?
Docker Compose?是 Docker 官方提供的多容器管理工具,允許你通過一個簡單的 YAML 配置文件定義和管理多容器服務。
它的核心功能包括:
-
定義多容器:通過一個
docker-compose.yml
?文件描述多個服務的構建方式、網絡配置和依賴關系。 -
一鍵管理:啟動、停止、重啟和查看服務日志都可以通過一條命令完成。
-
跨環境部署:支持開發、測試和生產環境的靈活配置。
為什么要用 Docker Compose?
-
多容器協作的利器
當你的項目依賴多個容器(如 Web 服務 + 數據庫 + 緩存),Compose 可以一鍵啟動并連接它們。 -
高效的開發體驗
不再需要記住復雜的docker run
?參數;通過 Compose,所有配置都在一個文件里。 -
簡化部署
無論是本地開發環境還是遠程服務器,一份docker-compose.yml
?文件搞定部署。 -
減少重復勞動
每次需要啟動服務時,不再需要重復輸入一大堆命令。
安裝 Docker Compose
以下是在 CentOS 下安裝 Docker Compose 的步驟:
-
下載二進制文件
?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
-
賦予執行權限
?sudo chmod +x /usr/local/bin/docker-compose
-
驗證安裝
?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 提供了一系列便捷命令:
-
啟動所有服務
?docker-compose up
-
停止所有服務
?docker-compose down
-
重啟指定服務
?docker-compose restart app
-
查看服務日志
?docker-compose logs -f
使用 Docker Compose 的注意事項
-
容器間通信
Docker Compose 會自動為所有服務創建一個默認網絡,服務之間可以通過名稱互相訪問。 -
數據持久化
確保數據庫等重要數據使用掛載卷(volumes
),避免容器重啟后數據丟失。 -
資源分配
在生產環境中,可以通過deploy
?配置限制 CPU 和內存使用量。 -
環境變量管理
使用.env
?文件集中管理敏感信息,例如數據庫密碼。
總結
當項目需要多個容器協同工作時,Docker Compose 是最值得信賴的“梭哈”工具。它讓開發者從繁瑣的手動操作中解放出來,將多容器管理變得簡單高效。不妨試試為你的項目編寫一個docker-compose.yml
?文件,體驗一下“一鍵部署”的快感!