4.1 指令 docker compose up
指令 docker compose up
是 Docker Compose 中的核心指令,用於啟動在 compose.yaml
檔案中定義的多容器應用程式。它會自動建立並啟動所有在配置中指定的服務,配置網路並掛載卷。在這堂講座中,我們會詳細探討如何使用指令 docker compose up
,其主要參數以及最佳實踐。
docker compose up
指令的主要功能
- 建立並啟動容器:指令
docker compose up
會建立並啟動在compose.yaml
檔案services
部分中列出的所有容器。 - 配置網路和卷:Docker Compose 會自動建立配置中所需的網路並掛載卷。
- 並行啟動服務:所有服務會同時啟動,加快多容器應用程式的啟動過程。
- 日誌監控:指令會即時輸出所有已啟動容器的日誌,便於監控狀態並快速發現問題。
docker compose up
指令的語法
docker compose up [options] [SERVICE...]
其中:
-
[options]
: 設定指令行為的其他參數 (例如--detach
,--build
,--scale
)。 -
[SERVICE...]
:(非必需)需啟動的服務清單。如果未指定,則會啟動所有服務。
4.2 範例 docker compose up
以下是使用 docker compose up
指令的範例:
1. 啟動所有服務
啟動檔案 compose.yaml
裡定義的所有服務:
docker compose up
2. 啟動特定的服務
啟動特定的服務,例如 web
:
docker compose up web
3. 在背景模式下啟動
如果想要讓所有服務在背景模式下運行,可以使用選項 -d
(detached mode):
docker compose up -d
使用這個選項後,指令會在容器啟動後立刻完成,容器會繼續在背景中運行。
4.3 命令 docker compose up
的參數
docker compose up
的一些有用參數:
1. 參數 --build
這個參數會讓 Docker Compose 在啟動容器之前重新構建映像檔。如果你修改了原始碼或 Dockerfile,這個參數就很有用。
docker compose up --build
2. 參數 --force-recreate
參數 --force-recreate
會強制 Docker Compose 重建容器,即使它們的配置沒有改變。
docker compose up --force-recreate
3. 參數 --no-recreate
參數 --no-recreate
防止重新創建已存在的容器,即使它們的配置已更改。
docker compose up --no-recreate
4. 參數 --remove-orphans
這個參數會刪除那些沒有定義在當前 compose.yaml
檔案中的容器,但它們是由之前的 Docker Compose 運行創建的。
docker compose up --remove-orphans
5. 參數 -V
, --renew-anon-volumes
這些參數會讓 Docker Compose 重新創建匿名卷,而不是重複使用它們。
docker compose up -V
4.4 範例和建議
使用指令 docker compose up
的不同選項範例:
範例 1:啟動應用程式並重建映像檔
這個範例在啟動容器之前會重建映像檔,這對於你已經更改了原始碼或 Dockerfile 的情況非常有用。
docker compose up --build
範例 2:以後台模式啟動並重建容器
這個範例以後台模式啟動容器,並且即使設定未更改也會重建它們。
docker compose up -d --force-recreate
範例 3:啟動特定服務並刪除不需要的容器
這個範例僅啟動服務 web
,並刪除未在當前檔案 compose.yaml
中定義的容器。
docker compose up web --remove-orphans
實際建議
1. 使用 .env
檔案
你可以使用檔案 .env
來定義環境變數,這些變數將在你的 compose.yaml
中使用。這有助於管理設定,並簡化在不同環境中的部署過程。
2. 日誌和監控
當你使用指令 docker compose up
啟動容器時,所有日誌都會顯示在控制台中。這讓你能夠跟蹤服務的狀態,並快速處理出現的問題。若需更詳細的監控,請使用指令 docker compose logs
和 docker compose ps
。
3. 自動化構建和部署
在自動化腳本或 CI/CD 流程中整合指令 docker compose up
,有助於自動化多容器應用的構建和部署流程。例如,你可以配置 Jenkins 或 GitHub Actions,自動執行構建、部署,並在每次代碼更新時啟動 docker compose up
。
GO TO FULL VERSION