設定用於部署的環境變數
.magento.env.yaml
檔案使用環境變數,集中管理所有環境的建置和部署動作,包括Pro Staging和生產環境。 若要在每個環境中設定唯一的動作,您必須在每個環境中修改此檔案。
.magento.env.yaml
檔案中使用一致的縮排,否則您的設定可能無法如預期運作。 檔案和範例檔案中的範例使用_雙空格縮排_。 使用ece-tools驗證命令檢查您的設定。檔案結構
.magento.env.yaml
檔案包含兩個區段: stage
和log
。 stage
區段會控制雲端部署程式階段期間發生的動作。
-
stage
— 使用階段區段來定義下列部署階段的特定動作:global
— 控制建置、部署和部署後階段的動作。 您可以在「建置」、「部署」和「部署後」區段中覆寫這些設定。build
— 僅控制建置階段中的動作。 如果您未在此區段中指定設定,則建置階段會使用全域區段的設定。deploy
— 僅控制部署階段中的動作。 如果您未在此段落中指定設定,部署階段會使用全域段落中的設定。post-deploy
— 控制部署應用程式後 的動作 以及容器開始接受連線 後的。
-
log
— 使用記錄區段來設定通知,包括通知型別和詳細資訊層級。slack
— 設定要傳送給Slack機器人的訊息。email
— 設定要傳送給一或多個電子郵件收件者的電子郵件。- 記錄處理常式 — 設定傳送至遠端記錄伺服器的軟硬體應用程式訊息。
環境變數
ece-tools
套件根據雲端變數、Cloud Console中設定的變數及.magento.env.yaml
組態檔的值,在env.php
檔案中設定值。 .magento.env.yaml
檔案中的環境變數會覆寫您現有的Commerce設定來自訂雲端環境。 如果預設值為Not Set
,則ece-tools
封裝會採取 NO 動作,並使用Commerce預設值或來自MAGENTO_CLOUD_RELATIONSHIPS設定的值。 如果設定了預設值,則ece-tools
套件會動作來設定該預設值。
下列主題包含您可以在.magento.env.yaml
檔案中使用的所有變數的詳細定義,例如預設值是否已設定:
從CLI建立組態檔
您可以使用以下ece-tools
命令為雲端環境產生.magento.env.yaml
設定檔。
建立組態檔
php ./vendor/bin/ece-tools cloud:config:create `<configuration-json>`
更新設定檔案中的值
php ./vendor/bin/ece-tools cloud:config:update `<configuration-json>`
兩個命令都需要單一引數:為至少一個組建、部署或部署後變數指定值的JSON格式陣列。 例如,下列命令會設定SCD_THREADS
和CLEAN_STATIC_FILES
變數的值:
php vendor/bin/ece-tools cloud:config:create '{"stage":{"build":{"SCD_THREADS":5}, "deploy":{"CLEAN_STATIC_FILES":false}}}'
並使用下列設定建立.magento.env.yaml
檔案:
stage:
build:
SCD_THREADS: 5
deploy:
CLEAN_STATIC_FILES: false
您可以使用cloud:config:update
命令來更新新檔案。 例如,下列命令會變更SCD_THREADS
值並新增SCD_COMPRESSION_TIMEOUT
組態:
php vendor/bin/ece-tools cloud:config:update '{"stage":{"build":{"SCD_THREADS":3, "SCD_COMPRESSION_TIMEOUT":1000}}}'
更新的檔案包含以下設定:
stage:
build:
SCD_THREADS: 3
SCD_COMPRESSION_TIMEOUT: 1000
deploy:
CLEAN_STATIC_FILES: false
驗證組態檔
使用下列ece-tools
命令來驗證.magento.env.yaml
設定檔,然後再將變更推播到遠端雲端環境。
php ./vendor/bin/ece-tools cloud:config:validate
下列範例回應提供要修正的專案清單:
Environment configuration is not valid. Correct the following items in your .magento.env.yaml file:
The SCD_THREADS variable contains an invalid value of type string. Use the following type: integer.
The SCD_STRATEGY variable contains an invalid value fast. Use one of the available value options: compact, quick, standard.
The NOT_EXIST_OPTION variable is not allowed in configuration.
PHP常數
您可以在.magento.env.yaml
檔案定義中使用PHP常數,而不是硬式編碼值。 下列範例使用PHP常數定義driver_options
:
stage:
deploy:
DATABASE_CONFIGURATION:
connection:
default:
driver_options:
!php/const:\PDO::MYSQL_ATTR_LOCAL_INFILE : 1
indexer:
driver_options:
!php/const:\PDO::MYSQL_ATTR_LOCAL_INFILE : 1
_merge: true
symfony/yaml
封裝版本時,常數剖析無法運作。錯誤處理
當因為.magento.env.yaml
組態檔中的非預期值而發生失敗時,您會收到錯誤訊息。 例如,下列錯誤訊息會對每個具有非預期值的專案顯示建議變更清單,有時會提供有效選項:
- Environment configuration is not valid. Please correct .magento.env.yaml file with next suggestions:
Item CRON_CONSUMERS_RUNNER is not supposed to be in stage build. Please move it to one of possible stages: global, deploy
Item SKIP_SCD has unexpected type string. Please use one of next types: boolean
Item VERBOSE_COMMANDS has unexpected type boolean. Please use one of next types: string
Item SKIP_HTML_MINIFICATION has unexpected type string. Please use one of next types: boolean
Item CRON_CONSUMERS_RUNNER has unexpected type boolean. Please use one of next types: array
Item VAR_WARM_UP_PAGES is not allowed in configuration.
Item WARM_UP_PAGES has unexpected type string. Please use one of next types: array
進行任何更正、認可及推送變更。 如果您沒有收到錯誤訊息,則對設定檔案的變更會通過驗證。
設定管理最佳化
如果您在傾印設定後啟用了「設定管理」,您應該將SCD_*變數從部署移至建置階段。 請參閱靜態內容部署策略。
組態管理之前:
deploy:
CRON_CONSUMERS_RUNNER:
cron_run: true
consumers: []
SCD_STRATEGY: compact
SCD_MATRIX:
...
REDIS_USE_SLAVE_CONNECTION: 1
啟用「組態管理」後,將SCD_*變數移至建置階段:
deploy:
CRON_CONSUMERS_RUNNER:
cron_run: true
consumers: []
REDIS_USE_SLAVE_CONNECTION: 1
build:
SCD_STRATEGY: compact
SCD_MATRIX:
...