[Bug] 应用实例名含大写时,已安装应用日志抽屉的「清理日志」报 invalid project name 且实际未清理
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- Mezza giornata
- Idoneità per principianti
- 60/100
Direzione di ricerca
Start with ComposeLogClean() in agent/app/service/container_compose.go, which compares the app name against the com.docker.compose.project label and then calls compose.Operate(path, "restart", req.Name). Reuse the existing resolveComposeProjectName() there, or lowercase both sides, and check the frontend call in frontend/src/views/app-store/installed/index.vue (openLog()). Done means cleaning logs for an instance named OpenClaw truncates the container logs without a project name error. Confirm with a mixed-case compose app and the restart path.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
1Panel 版本
v2.4.1
环境
- Docker Compose: v2.36.2
- 系统: Linux x86_64
问题描述
应用商店安装应用时,如果把实例名改成包含大写字母(例如 OpenClaw),进入「已安装 → 日志 → 清理」会报错:
服务错误: docker-compose restart failed, std: , err: stderr: invalid project name "OpenClaw": must consist only of lowercase alphanumeric characters, hyphens, and underscores as well as start with a letter or number , err: exit status 1
实际效果是「什么都没清」:容器日志没有被截断,容器也没有被重启。同一应用的「重启」按钮是正常的,只有日志抽屉里的「清理」会触发。
推测原因:日志抽屉把应用的显示名当成 compose 项目名传给了后端,而 compose 实际项目名(容器标签 com.docker.compose.project)是小写。
重现步骤
- 应用商店安装任意 compose 应用,实例名填写含大写字母的名字(如
OpenClaw); - 打开「应用商店 → 已安装」,在对应应用上点「日志」;
- 在日志抽屉里点「清理」;
- 接口
/containers/compose/clean/log返回上述错误。
相关代码定位(v2.4.1)
frontend/src/views/app-store/installed/index.vue的openLog():composeLogRef.acceptParams({ compose: row.path + '/docker-compose.yml', resource: row.name, container: row.container }),resource是应用实例名(可为大写)。frontend/src/components/log/container/index.vue:清理时调用cleanComposeLog(logSearch.resource, logSearch.compose, currentNode)。agent/app/service/container_compose.go的ComposeLogClean():- 先用应用名与容器标签
com.docker.compose.project做精确比较(openclaw!=OpenClaw,所以一个容器都匹配不到,日志不会被清); - 随后仍以
req.Name调用ComposeOperation(... Operation: "restart"),最终在compose.Operate(path, "restart", req.Name)里拼出--project-name OpenClaw,被 Compose v2 的项目名校验直接拒绝。
- 先用应用名与容器标签
期望结果
- 清理日志时不要直接使用应用显示名,按 compose 文件/目录解析真实项目名(仓库中
container_compose.go已有resolveComposeProjectName()可复用),或至少与容器标签做大小写归一化后比较; - 更根本一些:创建应用时限制实例名只能使用小写字母/数字/连字符/下划线(与 #4986 的建议一致),并在读取历史数据时做归一化。
相关日志输出
1Panel 操作日志:
post /containers/compose/clean/log Failed
服务错误: docker-compose restart failed, std: , err: stderr: invalid project name "OpenClaw": must consist only of lowercase alphanumeric characters, hyphens, and underscores as well as start with a letter or number , err: exit status 1
容器实际标签:
com.docker.compose.project=openclaw
com.docker.compose.project.config_files=/opt/1panel/apps/openclaw/OpenClaw/docker-compose.yml
补充信息
- 与 #4986 不同:#4986 是应用升级路径失败;本 issue 只影响「已安装应用 → 日志 → 清理」,且失败时不会产生任何副作用(没清日志、没重启容器)。
- 临时规避:不要用该按钮,用命令直接处理容器日志;或把实例名改成全小写。
- 修复建议:
ComposeLogClean内部先解析出真实项目名,再同时用于标签匹配和restart,避免显示名与项目名大小写不一致时双重失败。
- Lingua principale
- Go
- Stelle
- 37.3k
- Fork
- 3.4k
- Merge medio
- 8h 21m
- PR unite (30g)
- 124
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di 1Panel-dev/1Panel
-
[Feature] AI Gateway 概览页的 5 秒实时监控接口,能够返回具体调用用户信息。Forse già presa @wanghe-fit2cloud l’ha presa oggi. Aperta
1Panel-dev/1Panel#14289 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] 数据库模块的「管理 -> phpMyAdmin」未读取应用配置的自定义「Web 访问地址」,仍然硬编码跳转 IP:端口Forse già presa @wanghe-fit2cloud l’ha presa oggi. Aperta
1Panel-dev/1Panel#14288 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] Application upgrades take too long due to backup operationsForse già presa @wanghe-fit2cloud l’ha presa 1 giorno fa. Apertatype: optimization
1Panel-dev/1Panel#14278 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] Multi-server management is unstable, with node addition failing due to timeoutsForse già presa @wanghe-fit2cloud l’ha presa 1 giorno fa. Apertastatus: dev-complete type: optimization
1Panel-dev/1Panel#14272 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] NTP time synchronization ignores UTC offset and causes a one-hour rollback during DST fallbackForse già presa @wanghe-fit2cloud l’ha presa 1 giorno fa. Apertatype: to-be-verified
Difficoltà 3/5 1-2 giorni Idoneità per principianti 50/100
1Panel-dev/1Panel#14265 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di 1Panel-dev/1Panel
Issue simili
-
agent-butler-finding chore
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
jordansmall/spindrift#6318 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Eyevinn/moqlivemock#166 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
JakeChampion/lang#14091 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
hyperledger/fabric-x-orderer#1409 ·
I maintainer di solito rispondono entro 3 giorni
-
get actions doesn't show the approval flag, and describe action shows it unformattedForse già presa @kenokech l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno