設定 Docker Compose 中的預先定義環境變數
Docker Compose 包含幾個預先定義的環境變數。它也會繼承通用的 Docker CLI 環境變數,例如 DOCKER_HOST 和 DOCKER_CONTEXT。詳情請參閱 Docker CLI 環境變數參考。
本頁說明如何設定或變更下列預先定義的環境變數
COMPOSE_PROJECT_NAMECOMPOSE_FILECOMPOSE_PROFILESCOMPOSE_CONVERT_WINDOWS_PATHSCOMPOSE_PATH_SEPARATORCOMPOSE_IGNORE_ORPHANSCOMPOSE_REMOVE_ORPHANSCOMPOSE_PARALLEL_LIMITCOMPOSE_ANSICOMPOSE_STATUS_STDOUTCOMPOSE_ENV_FILESCOMPOSE_DISABLE_ENV_FILECOMPOSE_MENUCOMPOSE_EXPERIMENTALCOMPOSE_PROGRESS
覆寫方法
在變更或設定任何環境變數時,請留意環境變數優先順序。
設定細節
專案與檔案設定
COMPOSE_PROJECT_NAME
設定專案名稱。此值在啟動時會與服務名稱一同置於容器名稱之前。
例如,如果您的專案名稱是 myapp,且包含 db 和 web 兩個服務,則 Compose 會啟動分別名為 myapp-db-1 和 myapp-web-1 的容器。
Compose 可以透過不同方式設定專案名稱。各方法的優先順序(由高至低)如下:
-p命令列旗標COMPOSE_PROJECT_NAME- 來自設定檔的頂層
name:變數(或透過-f指定的一系列設定檔中的最後一個name:) - 包含設定檔(或透過
-f指定的第一個設定檔)之專案目錄的basename - 如果未指定設定檔,則為目前目錄的
basename
專案名稱必須僅包含小寫字母、十進位數字、連字號和底線,並且必須以小寫字母或十進位數字開頭。如果專案目錄或目前目錄的 basename 違反此限制,您必須使用其他機制之一。
另請參閱命令列選項總覽以及使用 -p 指定專案名稱。
COMPOSE_FILE
指定 Compose 檔案的路徑。支援指定多個 Compose 檔案。
- 預設行為:如果未提供,Compose 會在目前目錄中尋找名為
compose.yaml的檔案;如果找不到,Compose 會遞迴地搜尋每個父目錄,直到找到該名稱的檔案為止。 - 指定多個 Compose 檔案時,預設的路徑分隔符為:
Mac 和 Linux:
:(冒號)Windows:
;(分號)。例如:COMPOSE_FILE=compose.yaml:compose.prod.yaml
COMPOSE_PATH_SEPARATOR自訂。
另請參閱命令列選項總覽以及使用 -f 指定一個或多個 Compose 檔案的名稱與路徑。
COMPOSE_PROFILES
指定執行 docker compose up 時要啟用的一個或多個設定檔(profile)。
具有相符設定檔的服務會啟動,未定義任何設定檔的服務也會啟動。
例如,呼叫 docker compose up 時帶入 COMPOSE_PROFILES=frontend,會選擇具有 frontend 設定檔的服務,以及未指定設定檔的服務。
若指定多個設定檔,請使用逗號作為分隔符。
下列範例會啟用所有符合 frontend 和 debug 設定檔的服務,以及沒有設定檔的服務。
COMPOSE_PROFILES=frontend,debug
另請參閱在 Compose 中使用設定檔以及--profile 命令列選項。
COMPOSE_PATH_SEPARATOR
為列於 COMPOSE_FILE 中的項目指定不同的路徑分隔符。
- 預設為:
- 在 macOS 和 Linux 上為
: - 在 Windows 上為
;
- 在 macOS 和 Linux 上為
COMPOSE_ENV_FILES
如果未使用 --env-file,指定 Compose 應該使用的環境檔案。
使用多個環境檔案時,請使用逗號作為分隔符。例如:
COMPOSE_ENV_FILES=.env.envfile1,.env.envfile2
如果未設定 COMPOSE_ENV_FILES,且您在 CLI 中未提供 --env-file,Docker Compose 將採用預設行為,即在專案目錄中尋找 .env 檔案。
COMPOSE_DISABLE_ENV_FILE
讓您可以停用預設 .env 檔案的使用。
- 支援的值:
true或1,Compose 會忽略.env檔案false或0,Compose 會在專案目錄中尋找.env檔案
- 預設為:
0
環境處理與容器生命週期
COMPOSE_CONVERT_WINDOWS_PATHS
啟用時,Compose 會在磁碟區(volume)定義中執行從 Windows 風格到 Unix 風格的路徑轉換。
- 支援的值:
true或1,啟用false或0,停用
- 預設為:
0
COMPOSE_IGNORE_ORPHANS
啟用時,Compose 不會嘗試偵測該專案的孤立容器。
- 支援的值:
true或1,啟用false或0,停用
- 預設為:
0
COMPOSE_REMOVE_ORPHANS
啟用時,當更新服務或堆疊(stack)時,Compose 會自動移除孤立容器。孤立容器是指由先前設定所建立,但目前在 compose.yaml 檔案中不再定義的容器。
- 支援的值:
true或1,啟用自動移除孤立容器false或0,停用自動移除。Compose 會改為顯示關於孤立容器的警告。
- 預設為:
0
COMPOSE_PARALLEL_LIMIT
指定並行引擎呼叫的最高並行層級。
輸出
COMPOSE_ANSI
指定何時列印 ANSI 控制字元。
- 支援的值:
auto,Compose 會偵測是否可以使用 TTY 模式。否則,使用純文字模式never,使用純文字模式always或0,使用 TTY 模式
- 預設為:
auto
COMPOSE_STATUS_STDOUT
啟用時,Compose 會將其內部狀態和進度訊息寫入 stdout 而非 stderr。預設值為 false,以清楚區分 Compose 訊息與容器日誌之間的輸出串流。
- 支援的值:
true或1,啟用false或0,停用
- 預設為:
0
COMPOSE_PROGRESS
如果未使用 --progress,則定義進度輸出的類型。
支援的值有 auto、tty、plain、json 和 quiet。預設值為 auto。
使用者體驗
COMPOSE_MENU
啟用時,Compose 會顯示導覽選單,讓您可以選擇在 Docker Desktop 中開啟 Compose 堆疊、開啟 watch 模式,或使用 Docker Debug。
- 支援的值:
true或1,啟用false或0,停用
- 預設為:如果您透過 Docker Desktop 取得 Docker Compose,則為
1;否則預設為0
COMPOSE_EXPERIMENTAL
這是一個選擇性退出(opt-out)變數。關閉時,它會停用實驗性功能。
- 支援的值:
true或1,啟用false或0,停用
- 預設為:
1
Compose V2 不支援
下列環境變數在 Compose V2 中無效。欲知詳情,請參閱遷移至 Compose V2。
COMPOSE_API_VERSION預設 API 版本會與伺服器進行協商。請使用DOCKER_API_VERSION。
請參閱 Docker CLI 環境變數參考頁面。COMPOSE_HTTP_TIMEOUTCOMPOSE_TLS_VERSIONCOMPOSE_FORCE_WINDOWS_HOSTCOMPOSE_INTERACTIVE_NO_CLICOMPOSE_DOCKER_CLI_BUILD請使用DOCKER_BUILDKIT在 BuildKit 與傳統建置器之間進行選擇。如果DOCKER_BUILDKIT=0,則docker compose build會使用傳統建置器來建置映像檔。