force prod profiles in compose templates

This commit is contained in:
170-carry 2026-04-29 14:47:49 +08:00
parent 649f348540
commit b7c388db3e

View File

@ -148,6 +148,24 @@ def normalize_command(raw_value: Any) -> list[str] | str | None:
return [str(item) for item in raw_value] return [str(item) for item in raw_value]
def normalize_prod_profile_command(raw_value: list[str] | str | None) -> list[str] | str | None:
# 线上 compose 模板强制使用 prod避免从运行态刷新模板时把 local 启动参数带回来。
if raw_value is None:
return None
if isinstance(raw_value, list):
return [normalize_prod_profile_text(item) for item in raw_value]
return normalize_prod_profile_text(raw_value)
def normalize_prod_profile_text(raw_value: str) -> str:
text = str(raw_value)
for property_name in ("spring.profiles.active", "spring-profile.active"):
escaped = re.escape(property_name)
text = re.sub(rf"(--{escaped}=)[^\s]+", rf"\1prod", text)
text = re.sub(rf"(--{escaped})(\s+)[^\s]+", rf"\1\2prod", text)
return text
def healthcheck_block(config: dict[str, Any]) -> dict[str, Any] | None: def healthcheck_block(config: dict[str, Any]) -> dict[str, Any] | None:
# 把 inspect 里的健康检查结构翻回 compose 可接受格式。 # 把 inspect 里的健康检查结构翻回 compose 可接受格式。
healthcheck = config.get("Healthcheck") or {} healthcheck = config.get("Healthcheck") or {}
@ -315,6 +333,7 @@ def build_service_definition(
command = normalize_command(config.get("Cmd")) command = normalize_command(config.get("Cmd"))
if command is not None: if command is not None:
command = normalize_prod_profile_command(command)
service_definition["command"] = command service_definition["command"] = command
healthcheck = healthcheck_block(config) healthcheck = healthcheck_block(config)