---
title: "啟動指令與環境變數"
description: "設定容器進程、參數和環境變數，並理解指令解析及啟動失敗的檢查方法。"
---

> Documentation Index
> Fetch the complete documentation index at: https://cdelivery.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 啟動指令與環境變數

應用程式設定中的容器設定用於改變映像檔的啟動方式和環境。編輯需要 Operator 或 Admin；修改這些設定會影響後續執行的容器。

## 啟動指令

留空時使用映像檔預設啟動方式。自訂時需要填寫完整的可執行程序及參數，例如：

```text
nginx -g 'daemon off;'
```

指令會按引號和空格解析為參數，不會自動交給 shell 執行。管道、重定向、`&&` 和環境變數替換只有在你顯式啟動 shell 時才具有 shell 含義。

確實需要 shell 時，可以填寫：

```text
sh -c 'printf "%s\n" "$GREETING"; exec nginx -g "daemon off;"'
```

映像檔必須包含 `sh` 及所呼叫程序。`exec` 讓最後的服務進程接替 shell，有利於正確接收停止信號。改變入口還可能跳過映像檔自帶的初始化邏輯，優先遵循映像檔作者的啟動說明。

## 環境變數

1. 打開應用程式設定中的環境變數設定。
2. 逐項添加變數名和值，例如 `GREETING=Hello` 或業務要求的資料庫地址。
3. 檢查重複項、空值及拼寫，再儲存應用程式設定。
4. 在新容器日誌或應用程式輸出中驗證參數已生效。

變數名長度為 1–128，不能包含 `=`；值最多 4096 個字符。這裡填寫的是值本身，不需要額外包一層 shell 引號。`$OTHER` 不會因為寫在變數值中就自動替換成另一個變數。

同分組資料庫可以使用應用程式名稱作為主機名。容器內的 `localhost` 指向該容器自身，不能用它代替另一個資料庫應用程式的地址，參見[應用程式間通信](/docs/zh-tw/guides/networking/connectivity/)。

## 設定內容的可見性

環境變數屬於共享應用程式設定。平台只對明確識別的秘密字段脫敏，不會自動把每個看起來像密碼的業務變數變為個人秘密。應依據實際帳戶權限決定哪些內容適合存放在這裡。

較大的設定檔案使用 [XConfig](/docs/zh-tw/guides/apps/xconfig/)；持續寫入的業務資料使用[資料卷](/docs/zh-tw/guides/apps/persistence/)。

## 啟動失敗怎麼檢查

| 現象 | 常見原因 |
| --- | --- |
| 找不到程序 | 可執行路徑錯誤，或映像檔根本不包含該程序 |
| 引號解析失敗 | 單雙引號不配對，shell 表達式未顯式使用 shell |
| 服務啟動後立即退出 | 程序轉入後台、缺少必需變數或初始化失敗 |
| 資料庫無法連接 | 使用了錯誤主機名、容器連接埠或認證資訊 |
| 儲存後仍像舊設定 | 新副本尚未替換完成，或 Guardian 未推廣候選設定 |

應用程式的自動重啟延遲可在重啟策略設定中調整，預設 60 秒。重啟不能修復持續存在的錯誤指令；應先修正設定，再看[應用程式日誌](/docs/zh-tw/guides/observability/logs/application/)。

Source: https://cdelivery.dev/docs/zh-tw/guides/apps/container/index.mdx
