From 6c7b9c2f31d8bd01161d65ee333e2a18e68fc2ef Mon Sep 17 00:00:00 2001 From: codex Date: Tue, 21 Jul 2026 06:09:41 +0000 Subject: [PATCH] fix(macos): normalize rootless Docker subordinate IDs --- bot_bottle/backend/macos_container/rootless_docker.py | 5 +++-- tests/unit/test_macos_rootless_docker.py | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/bot_bottle/backend/macos_container/rootless_docker.py b/bot_bottle/backend/macos_container/rootless_docker.py index af7acc7..78a3a03 100644 --- a/bot_bottle/backend/macos_container/rootless_docker.py +++ b/bot_bottle/backend/macos_container/rootless_docker.py @@ -42,8 +42,9 @@ def build_image( " && apt-get install -y --no-install-recommends docker.io uidmap " "rootlesskit slirp4netns fuse-overlayfs \\\n" " && rm -rf /var/lib/apt/lists/* \\\n" - " && echo 'node:100000:65536' >> /etc/subuid \\\n" - " && echo 'node:100000:65536' >> /etc/subgid \\\n" + " && sed -i '/^node:/d' /etc/subuid /etc/subgid \\\n" + " && printf 'node:100000:65536\\n' >> /etc/subuid \\\n" + " && printf 'node:100000:65536\\n' >> /etc/subgid \\\n" " && ln -s /usr/share/docker.io/contrib/dockerd-rootless.sh " "/usr/local/bin/dockerd-rootless.sh\n" "COPY rootless-docker-init.sh " diff --git a/tests/unit/test_macos_rootless_docker.py b/tests/unit/test_macos_rootless_docker.py index 5b06b17..cb43c73 100644 --- a/tests/unit/test_macos_rootless_docker.py +++ b/tests/unit/test_macos_rootless_docker.py @@ -62,6 +62,9 @@ class TestRootlessDockerImage(unittest.TestCase): text = Path(dockerfile).read_text(encoding="utf-8") self.assertIn("FROM agent:base", text) self.assertIn("docker.io uidmap rootlesskit slirp4netns", text) + self.assertIn("sed -i '/^node:/d' /etc/subuid /etc/subgid", text) + self.assertEqual(1, text.count("node:100000:65536\\n' >> /etc/subuid")) + self.assertEqual(1, text.count("node:100000:65536\\n' >> /etc/subgid")) self.assertIn("USER node", text) self.assertTrue((Path(context) / "rootless-docker-init.sh").is_file())