何謂 Docker Compose?
Docker Compose 是專為 Docker 設計的工具,用於定義和管理多容器應用程式,簡化複雜應用的部署與管理流程。簡而言之,它允許您在單一 YAML 檔案中描述應用程式的多重服務、網路及儲存配置,並透過單一指令啟動所有服務。若您在 UGOS Pro 上運行多個應用程式,或希望簡化部署流程,Docker Compose 將是不可或缺的工具。
適用情境
在 UGOS Pro 上使用 Docker Compose 通常適用於以下情境:
多服務應用程式管理
若您在 NAS 上運行由多個服務組成的複雜應用程式(例如網頁伺服器、資料庫、快取及反向代理),Docker Compose 可將這些服務整合至單一設定檔,實現統一管理與維護。
-
範例:典型的 WordPress 專案可能包含 WordPress 容器與 MySQL 容器。透過 Compose,您可同時啟動兩項服務,並確保其連線設定正確無誤。
簡化應用程式部署
透過 Docker Compose 檔案,您可定義容器化應用所需的所有服務、網路及儲存配置。僅需單一指令啟動所有定義服務,Docker Compose 便會自動管理服務依賴關係,透過 Docker 介面簡化複雜應用部署流程。
應用程式可攜性
Docker Compose 賦予容器化應用程式高度可攜性。您可將整個應用程式的設定打包至 Compose 檔案,快速部署於不同 UGOS Pro 裝置上,確保一致性與效率。
Docker Compose 檔案結構
Docker Compose 檔案通常命名為docker-compose.yaml,採用 YAML 語法定義服務、網路及儲存。基本檔案結構如下:
version: '3'
services:
web:
image: nginx
ports:
- "90:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: mydatabase
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- ./data:/var/lib/mysql
-
version: 定義 Docker Compose 檔案的版本。
-
services:指定應用程式中的服務。此範例中,
web與db定義為兩個服務。 -
image: 標示服務使用的 Docker 映像檔,例如
nginx和mysql。 -
ports: 映射主機與容器間的端口。例如
90:80將 NAS 主機的 90 端口映射至容器的 80 端口,可透過NAS_IP:90存取容器 。 -
volumes:將 NAS 儲存目錄映射至容器目錄以實現資料持久化。
-
環境變數:設定容器內服務所需的環境變數,例如資料庫密碼、API 金鑰及其他配置選項。

環境變數說明
在此範例中:
-
MYSQL_ROOT_PASSWORD:將 MySQL 資料庫的 root 密碼設定為example。 -
MYSQL_DATABASE:建立名為mydatabase的資料庫 。 -
MYSQL_USER:建立名為user的資料庫使用者 。 -
MYSQL_PASSWORD:將上述使用者的密碼設定為password。
這些環境變數會在容器啟動時傳遞給 MySQL 服務,用於初始化資料庫。
卷掛載運作原理
在 Docker Compose 檔案中 ,./html:/usr/share/nginx/html 為卷宗設定,其中 ./ 代表 Docker Compose 檔案所在目錄。
-
./html:在此情境中,./代表 Docker Compose 檔案所在的目錄。具體而言,./html指的是 UGOS Pro 上的目錄,即 Docker Compose 檔案所在目錄下的html子目錄。 -
/usr/share/nginx/html:指向容器內的目錄。對於 Nginx 容器而言,此為靜態網站檔案的預設路徑。
透過此設定,Docker 將主機端的 ./html 目錄掛載至 容器內的/usr/share/nginx/html ,實現:
-
主機端
./html目錄 的變更能即時反映 至容器內的/usr/share/nginx/html。 -
容器內修改的內容同步回主機的
./html目錄。
相關連結: 如何在 Docker Compose 設定檔中正確指定卷掛載路徑?
如何在 UGOS Pro 上使用 Docker Compose
假設您正在 UGREEN NAS 上運行家庭媒體中心。可透過 Docker Compose 管理Jellyfin(媒體伺服器)、MariaDB(資料庫)及Redis(快取)等服務。僅需單一 docker-compose.yml 檔案,即可定義這些服務的依賴關係、卷掛載與網路配置,並以簡易指令管理整個媒體中心。
操作步驟:
1. 建立專案
開啟 UGOS Pro 中的Docker應用程式,點擊「專案」>「建立」,並填寫以下資訊:
-
名稱:為專案命名
-
儲存路徑:指定 Docker Compose 設定檔(
docker-compose.yaml)的儲存位置。 -
Compose 設定:直接輸入 YAML 設定內容,或匯入現有的
docker-compose.yaml檔案。
2.設定 PUID 與 PGID
-
如有需要,請設定PUID與PGID值。
-
建議使用當前使用者的使用者 ID 與群組 ID,以避免權限問題導致容器錯誤。
3. 部署專案
-
確認設定無誤後,點擊「部署」即可建置專案。
遵循上述步驟,您即可運用 Docker Compose 啟動並管理完整的家庭媒體中心。所有服務將在後台運行,依賴關係均已正確配置,確保系統流暢運作。