[Bug] 应用实例名含大写时,已安装应用日志抽屉的「清理日志」报 invalid project name 且实际未清理
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- Medio día
- Aptitud para principiantes
- 60/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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,避免显示名与项目名大小写不一致时双重失败。
- Lenguaje dominante
- Go
- Estrellas
- 37.3k
- Forks
- 3.4k
- Merge medio
- 8 h 21 min
- PR fusionados (30 d)
- 124
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de 1Panel-dev/1Panel
-
[Feature] AI Gateway 概览页的 5 秒实时监控接口,能够返回具体调用用户信息。Posiblemente ocupada @wanghe-fit2cloud la tomó hoy. Abierto
1Panel-dev/1Panel#14289 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Bug] 数据库模块的「管理 -> phpMyAdmin」未读取应用配置的自定义「Web 访问地址」,仍然硬编码跳转 IP:端口Posiblemente ocupada @wanghe-fit2cloud la tomó hoy. Abierto
1Panel-dev/1Panel#14288 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Bug] Application upgrades take too long due to backup operationsPosiblemente ocupada @wanghe-fit2cloud la tomó hace 1 día. Abiertotype: optimization
1Panel-dev/1Panel#14278 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Bug] Multi-server management is unstable, with node addition failing due to timeoutsPosiblemente ocupada @wanghe-fit2cloud la tomó hace 1 día. Abiertostatus: dev-complete type: optimization
1Panel-dev/1Panel#14272 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Bug] NTP time synchronization ignores UTC offset and causes a one-hour rollback during DST fallbackPosiblemente ocupada @wanghe-fit2cloud la tomó hace 1 día. Abiertotype: to-be-verified
Dificultad 3/5 1-2 días Aptitud para principiantes 50/100
1Panel-dev/1Panel#14265 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de 1Panel-dev/1Panel
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
agent-butler-finding chore
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
jordansmall/spindrift#6318 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Eyevinn/moqlivemock#166 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
JakeChampion/lang#14091 ·
Los mantenedores suelen responder en 1 día
-
batcher: BAF send context leaks per batchPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
hyperledger/fabric-x-orderer#1409 ·
Los mantenedores suelen responder en 3 días