fix-log-volume-permission
main
容器内反复出现:
PermissionError: [Errno 13] Permission denied: /app/logs/app.log WARN src.core.log_buffer 启用文件日志失败,仅保留 stdout/内存日志
best-effort 降级按设计生效(不影响启动),但文件日志实际未启用。
docker compose build api && docker compose up -d api
当前卷为空(写入一直失败,无历史数据),重建后会自动继承正确属主。验证:启动日志应出现「文件日志已启用: /app/logs/app.log」。若卷已非空仍报权限,手动兜底: docker compose exec -u root api chown -R profeto:profeto /app/logs
生产实测: applogs 命名卷挂到 /app/logs 时挂载点由 Docker 以 root:root 创建,而非 root 进程(profeto)写入 app.log 时 PermissionError(Errno 13), best-effort 降级生效但文件日志实际未启用。 - Dockerfile: 镜像内预创建 /app/logs 并 chown(chown -R 已有,覆盖新目录); 命名卷为空且首次挂载时 Docker 会复制镜像目录属主,重建镜像即可修复 - log_buffer: PermissionError 单独捕获,warning 给出可操作的排查方向 (镜像预建目录/chown/重建空卷),其余异常仍保持原通用降级
No dependencies set.
The note is not visible to the blocked user.
问题(生产实测)
容器内反复出现:
best-effort 降级按设计生效(不影响启动),但文件日志实际未启用。
根因
修复
部署操作
当前卷为空(写入一直失败,无历史数据),重建后会自动继承正确属主。验证:启动日志应出现「文件日志已启用: /app/logs/app.log」。若卷已非空仍报权限,手动兜底: docker compose exec -u root api chown -R profeto:profeto /app/logs