設定 Docker Compose 中的預先定義環境變數

Docker Compose 包含幾個預先定義的環境變數。它也會繼承通用的 Docker CLI 環境變數,例如 DOCKER_HOSTDOCKER_CONTEXT。詳情請參閱 Docker CLI 環境變數參考

本頁說明如何設定或變更下列預先定義的環境變數

  • COMPOSE_PROJECT_NAME
  • COMPOSE_FILE
  • COMPOSE_PROFILES
  • COMPOSE_CONVERT_WINDOWS_PATHS
  • COMPOSE_PATH_SEPARATOR
  • COMPOSE_IGNORE_ORPHANS
  • COMPOSE_REMOVE_ORPHANS
  • COMPOSE_PARALLEL_LIMIT
  • COMPOSE_ANSI
  • COMPOSE_STATUS_STDOUT
  • COMPOSE_ENV_FILES
  • COMPOSE_DISABLE_ENV_FILE
  • COMPOSE_MENU
  • COMPOSE_EXPERIMENTAL
  • COMPOSE_PROGRESS

覆寫方法

方法描述
.env 檔案位於工作目錄中。
Shell定義於主機作業系統 Shell 中。
CLI在執行時期透過 --env-e 旗標傳遞。

在變更或設定任何環境變數時,請留意環境變數優先順序

設定細節

專案與檔案設定

COMPOSE_PROJECT_NAME

設定專案名稱。此值在啟動時會與服務名稱一同置於容器名稱之前。

例如,如果您的專案名稱是 myapp,且包含 dbweb 兩個服務,則 Compose 會啟動分別名為 myapp-db-1myapp-web-1 的容器。

Compose 可以透過不同方式設定專案名稱。各方法的優先順序(由高至低)如下:

  1. -p 命令列旗標
  2. COMPOSE_PROJECT_NAME
  3. 來自設定檔的頂層 name: 變數(或透過 -f 指定的一系列設定檔中的最後一個 name:
  4. 包含設定檔(或透過 -f 指定的第一個設定檔)之專案目錄的 basename
  5. 如果未指定設定檔,則為目前目錄的 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 設定檔的服務,以及未指定設定檔的服務。

若指定多個設定檔,請使用逗號作為分隔符。

下列範例會啟用所有符合 frontenddebug 設定檔的服務,以及沒有設定檔的服務。

COMPOSE_PROFILES=frontend,debug

另請參閱在 Compose 中使用設定檔以及--profile 命令列選項

COMPOSE_PATH_SEPARATOR

為列於 COMPOSE_FILE 中的項目指定不同的路徑分隔符。

  • 預設為:
  • 在 macOS 和 Linux 上為 :
  • 在 Windows 上為 ;

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 檔案的使用。

  • 支援的值:
  • true1,Compose 會忽略 .env 檔案
  • false0,Compose 會在專案目錄中尋找 .env 檔案
  • 預設為:0

    環境處理與容器生命週期

    COMPOSE_CONVERT_WINDOWS_PATHS

    啟用時,Compose 會在磁碟區(volume)定義中執行從 Windows 風格到 Unix 風格的路徑轉換。

    • 支援的值:
    • true1,啟用
    • false0,停用
  • 預設為:0

    COMPOSE_IGNORE_ORPHANS

    啟用時,Compose 不會嘗試偵測該專案的孤立容器。

    • 支援的值:
    • true1,啟用
    • false0,停用
  • 預設為:0

    COMPOSE_REMOVE_ORPHANS

    啟用時,當更新服務或堆疊(stack)時,Compose 會自動移除孤立容器。孤立容器是指由先前設定所建立,但目前在 compose.yaml 檔案中不再定義的容器。

    • 支援的值:
    • true1,啟用自動移除孤立容器
    • false0,停用自動移除。Compose 會改為顯示關於孤立容器的警告。
  • 預設為:0

    COMPOSE_PARALLEL_LIMIT

    指定並行引擎呼叫的最高並行層級。

    輸出

    COMPOSE_ANSI

    指定何時列印 ANSI 控制字元。

    • 支援的值:
    • auto,Compose 會偵測是否可以使用 TTY 模式。否則,使用純文字模式
    • never,使用純文字模式
    • always0,使用 TTY 模式
  • 預設為:auto

    COMPOSE_STATUS_STDOUT

    啟用時,Compose 會將其內部狀態和進度訊息寫入 stdout 而非 stderr。預設值為 false,以清楚區分 Compose 訊息與容器日誌之間的輸出串流。

    • 支援的值:
    • true1,啟用
    • false0,停用
  • 預設為:0

    COMPOSE_PROGRESS

    要求: Docker Compose 2.36.0 及更高版本

    如果未使用 --progress,則定義進度輸出的類型。

    支援的值有 autottyplainjsonquiet。預設值為 auto

    使用者體驗

    COMPOSE_MENU

    需求: Docker Compose 2.26.0 或更高版本

    啟用時,Compose 會顯示導覽選單,讓您可以選擇在 Docker Desktop 中開啟 Compose 堆疊、開啟 watch 模式,或使用 Docker Debug

    • 支援的值:
    • true1,啟用
    • false0,停用
  • 預設為:如果您透過 Docker Desktop 取得 Docker Compose,則為 1;否則預設為 0

    COMPOSE_EXPERIMENTAL

    需求: Docker Compose 2.26.0 或更高版本

    這是一個選擇性退出(opt-out)變數。關閉時,它會停用實驗性功能。

    • 支援的值:
    • true1,啟用
    • false0,停用
  • 預設為:1

    Compose V2 不支援

    下列環境變數在 Compose V2 中無效。欲知詳情,請參閱遷移至 Compose V2

    • COMPOSE_API_VERSION 預設 API 版本會與伺服器進行協商。請使用 DOCKER_API_VERSION請參閱 Docker CLI 環境變數參考頁面。
    • COMPOSE_HTTP_TIMEOUT
    • COMPOSE_TLS_VERSION
    • COMPOSE_FORCE_WINDOWS_HOST
    • COMPOSE_INTERACTIVE_NO_CLI
    • COMPOSE_DOCKER_CLI_BUILD 請使用 DOCKER_BUILDKIT 在 BuildKit 與傳統建置器之間進行選擇。如果 DOCKER_BUILDKIT=0,則 docker compose build 會使用傳統建置器來建置映像檔。
  • © . This site is unofficial and not affiliated with Kubernetes or Docker Inc.