設定
控制 HTTP 伺服器、沙箱上限與 Redis 的環境變數。
載入方式
cmd/api 在 init 呼叫 godotenv.Load()。若缺少 .env,程序會警告並改用行程環境變數。
複製 .env.example 後調整:
cp .env.example .env
internal/utils 的 GetWithDefault、GetWithDefaultInt、GetWithDefaultFloat 在變數未設定或為空時提供預設值。
變數一覽
| 變數 | 必要 | 預設值 | 使用位置 | 說明 |
|---|---|---|---|---|
HTTP_PORT |
否 | 8080 |
internal.CreateServer |
HTTP 監聽埠 |
MAX_CPUS |
否 | 1 |
sandbox.NewSlice |
slice CPUQuota 核心數(百分比 = 核心 × 100) |
MAX_MEMORY |
否 | 128M |
sandbox.NewSlice |
slice MemoryMax 字串 |
CODE_MAX_SIZE |
否 | 262144 |
handler.getCodeMaxSize |
run/upload body 上限位元組(256KB) |
TIMEOUT_SCRIPT |
否 | 30 |
handler.runScript* |
腳本逾時秒數;request timeout 另加 Redis 緩衝 |
REDIS_HOST |
否 | localhost |
database.Init |
Redis 主機 |
REDIS_PORT |
否 | 6379 |
database.Init |
Redis 埠 |
REDIS_PASSWORD |
否 | 空 | database.Init |
Redis 密碼 |
REDIS_DB |
否 | 0 |
database.Init |
Redis DB 編號 |
REDIS_TIMEOUT_SECONDS |
否 | 5 |
database.Init |
Dial/read/write/pool 逾時 |
注意事項
- Redis 連線為必要:
Ping失敗會中止啟動。 - Linux 上 slice 建立失敗僅警告;若 user systemd 不可用,仍可能在無 cgroup 上限下執行。
CODE_MAX_SIZE透過http.MaxBytesReader套用在 run body。- 部分 Handler Redis 操作使用固定 5 秒 context,與
REDIS_TIMEOUT_SECONDS分開。