fix(deploy): 部署先 stop 再 force-recreate —— rootless podman 删不掉运行中容器的网络进程

2026-08-04 新生产机(Ubuntu 26.04,运维刻意配的 rootless podman:非 root 账号 +
netavark/pasta,攻击面更小)实测:
  rootless netns: kill network process: permission denied
  Error: ... up -d --force-recreate pac-service: exit status 1
失败还留下 <hash>_pac-pac-service-1 半成品容器,要手工清。

根因:force-recreate 要删**运行中**的容器,rootless 杀不掉其网络进程。
手动 stop → rm 实测正常,说明不是普遍权限问题,只是删运行中容器这条路走不通。

改为先 stop 再 up --force-recreate:
  · rootless podman 下通过(网络进程正常退出后再删)
  · docker 上语义等价甚至更彻底(stop 后必然重建,不依赖 compose 判定)
  · 仍保留 --force-recreate,不退回裸 up -d —— 那正是本脚本要绕开的 compose diff 缺陷

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Found errors in your .gitlab-ci.yml:

  • jobs:openapi-drift config contains unknown keys: rules
You can also test your .gitlab-ci.yml in the Lint
Status Job ID Name Coverage