Skip to content

Commit 924b7fa

Browse files
skulidropekclaude
andcommitted
fix(shell): restart browser sidecar reliably via healthcheck + DinD isolation
- add healthcheck to browser service (curl /json/version on port 9223) so Docker knows when CDP is actually ready instead of just when the container started - switch depends_on to condition: service_healthy so the main container waits for a healthy browser before starting — fixes the restart race condition (#137) - replace host docker.sock bind-mount in docker-compose.api.yml with a dedicated DinD service (docker:27-dind) and set DOCKER_HOST=tcp://dind:2375 in api, providing full Docker isolation without touching the host daemon Closes #137 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 65da7d4 commit 924b7fa

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

docker-compose.api.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
11
services:
2+
dind:
3+
image: docker:27-dind
4+
container_name: docker-git-dind
5+
privileged: true
6+
environment:
7+
DOCKER_TLS_CERTDIR: ""
8+
volumes:
9+
- docker-git-dind-storage:/var/lib/docker
10+
restart: unless-stopped
11+
212
api:
313
build:
414
context: .
@@ -9,9 +19,14 @@ services:
919
DOCKER_GIT_PROJECTS_ROOT: ${DOCKER_GIT_PROJECTS_ROOT:-/home/dev/.docker-git}
1020
DOCKER_GIT_FEDERATION_PUBLIC_ORIGIN: ${DOCKER_GIT_FEDERATION_PUBLIC_ORIGIN:-}
1121
DOCKER_GIT_FEDERATION_ACTOR: ${DOCKER_GIT_FEDERATION_ACTOR:-docker-git}
22+
DOCKER_HOST: tcp://dind:2375
1223
ports:
1324
- "${DOCKER_GIT_API_BIND_HOST:-127.0.0.1}:${DOCKER_GIT_API_PORT:-3334}:${DOCKER_GIT_API_PORT:-3334}"
1425
volumes:
15-
- /var/run/docker.sock:/var/run/docker.sock
1626
- ${DOCKER_GIT_PROJECTS_ROOT_HOST:-/home/dev/.docker-git}:${DOCKER_GIT_PROJECTS_ROOT:-/home/dev/.docker-git}
27+
depends_on:
28+
- dind
1729
restart: unless-stopped
30+
31+
volumes:
32+
docker-git-dind-storage:

packages/lib/src/core/templates/docker-compose.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@ const buildPlaywrightFragments = (
7878
const browserCdpEndpoint = `http://${browserServiceName}:9223`
7979

8080
return {
81-
maybeDependsOn: ` depends_on:\n - ${browserServiceName}\n`,
81+
maybeDependsOn: ` depends_on:\n ${browserServiceName}:\n condition: service_healthy\n`,
8282
maybePlaywrightEnv:
8383
` MCP_PLAYWRIGHT_ENABLE: "1"\n MCP_PLAYWRIGHT_CDP_ENDPOINT: "${browserCdpEndpoint}"\n`,
8484
maybeBrowserService:
8585
`\n ${browserServiceName}:\n build:\n context: .\n dockerfile: ${browserDockerfile}\n container_name: ${browserContainerName}\n restart: unless-stopped\n${
8686
renderResourceLimits(resourceLimits)
87-
} environment:\n VNC_NOPW: "1"\n shm_size: "2gb"\n expose:\n - "9223"\n volumes:\n - ${browserVolumeName}:/data\n networks:\n - ${networkName}\n`,
87+
} healthcheck:\n test: ["CMD", "curl", "-sf", "http://localhost:9223/json/version"]\n interval: 5s\n timeout: 3s\n retries: 10\n start_period: 15s\n environment:\n VNC_NOPW: "1"\n shm_size: "2gb"\n expose:\n - "9223"\n volumes:\n - ${browserVolumeName}:/data\n networks:\n - ${networkName}\n`,
8888
maybeBrowserVolume: ` ${browserVolumeName}:\n`
8989
}
9090
}

0 commit comments

Comments
 (0)