welcom ! Handel home

2025年3月5日 星期三

Docker Compose 功能介紹

 

📌 Docker Compose 功能介紹

Docker Compose 是一個 工具,用來 定義和管理多個 Docker 容器 的應用程式。
它使用 YAML 配置文件 (docker-compose.yml) 來描述整個應用的架構,然後可以使用簡單的命令來啟動、停止和管理容器。


🚀 為什麼使用 Docker Compose?

功能說明
管理多個容器一個指令就能啟動多個互相協作的 Docker 容器
統一配置使用 docker-compose.yml 來描述應用程式架構
簡化開發開發環境與正式環境可以使用相同的設定
便於擴展支援 多個服務(如資料庫、後端、前端等)
內建網路管理不同容器間 可以透過 docker network 自動通訊

🔹 Docker Compose 基本架構

範例:docker-compose.yml

yaml
version: '3' services: web: image: nginx:latest ports: - "8080:80" networks: - mynetwork database: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example networks: - mynetwork networks: mynetwork:

📌 這個 Compose 設定:

  1. 啟動兩個容器 (web & database)
    • web: 使用 nginx:latest
    • database: 使用 mysql:5.7
  2. 自動建立 Docker 網路 (mynetwork)
    • webdatabase 可以互相通訊
  3. Nginx 服務 (web) 透過 8080 提供 HTTP 存取

🚀 常用 Docker Compose 指令

指令用途
docker-compose up啟動 所有 服務
docker-compose up -d背景模式 運行
docker-compose down停止並刪除容器
docker-compose ps查看運行中的服務
docker-compose logs檢視日誌輸出
docker-compose exec <service> bash進入容器內部

🔹 進階功能

1️⃣ volumes(資料持久化)

📌 確保 MySQL 資料庫資料不會因為容器重啟而遺失

yaml
version: '3' services: database: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example volumes: - db_data:/var/lib/mysql volumes: db_data:

2️⃣ depends_on(容器依賴管理)

📌 確保 webdatabase 啟動後才開始運行

yaml
version: '3' services: database: image: mysql:5.7 web: image: nginx:latest depends_on: - database

3️⃣ .env 環境變數

📌 使用 .env 檔案來管理環境變數

.env 檔案

env
MYSQL_ROOT_PASSWORD=mysecretpassword

docker-compose.yml

yaml
version: '3' services: database: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

🚀 總結

功能Docker Compose 提供的解決方案
管理多個容器services 定義多個服務
簡單啟動應用docker-compose up 自動啟動全部容器
設定網路networks 讓容器可以互相通訊
持久化資料volumes 確保資料庫等服務不會遺失數據
設定環境變數.env 文件管理變數

🚀 Docker Compose 讓開發、測試、部署變得更簡單,適合開發微服務應用! 🚀



沒有留言: