@@ -30,11 +30,16 @@ type PlaywrightFragments = Pick<
3030 "maybeDependsOn" | "maybeDockerSocketMount" | "maybePlaywrightEnv" | "maybeBrowserVolume"
3131>
3232
33+ export type DockerComposeRenderOptions = {
34+ readonly enableLocalDockerSocket : boolean
35+ }
36+
3337export type ComposeResourceLimits = {
3438 readonly main : ResolvedComposeResourceLimits | undefined
3539 readonly playwright : ResolvedComposeResourceLimits | undefined
3640}
3741
42+ const defaultDockerComposeRenderOptions : DockerComposeRenderOptions = { enableLocalDockerSocket : false }
3843const sharedCodexVolumeKey = "docker_git_shared_codex"
3944const sharedCacheVolumeKey = "docker_git_shared_cache"
4045const bootstrapVolumeKey = "docker_git_bootstrap"
@@ -81,7 +86,10 @@ const renderGpu = (gpu: TemplateConfig["gpu"]): string =>
8186
8287const renderBootstrapMounts = ( ) : string => ` - ${ bootstrapVolumeKey } :/opt/docker-git/bootstrap/source:ro`
8388
84- const renderOptionalDockerSocketMount = ( ) : string => ` - /var/run/docker.sock:/var/run/docker.sock`
89+ const renderOptionalDockerSocketMount = ( enableLocalDockerSocket : boolean ) : string =>
90+ enableLocalDockerSocket
91+ ? ` - /var/run/docker.sock:/var/run/docker.sock`
92+ : ""
8593
8694const renderEnvFiles = ( config : TemplateConfig ) : string =>
8795 ` env_file:\n - ${ config . envGlobalPath } \n - ${ config . envProjectPath } \n`
@@ -93,7 +101,8 @@ const renderBrowserLimitEnv = (
93101
94102const buildPlaywrightFragments = (
95103 config : TemplateConfig ,
96- resourceLimits : ResolvedComposeResourceLimits | undefined
104+ resourceLimits : ResolvedComposeResourceLimits | undefined ,
105+ options : DockerComposeRenderOptions
97106) : PlaywrightFragments => {
98107 if ( ! config . enableMcpPlaywright ) {
99108 return {
@@ -110,7 +119,7 @@ const buildPlaywrightFragments = (
110119
111120 return {
112121 maybeDependsOn : "" ,
113- maybeDockerSocketMount : renderOptionalDockerSocketMount ( ) ,
122+ maybeDockerSocketMount : renderOptionalDockerSocketMount ( options . enableLocalDockerSocket ) ,
114123 maybePlaywrightEnv :
115124 ` MCP_PLAYWRIGHT_ENABLE: "1"\n MCP_PLAYWRIGHT_CDP_ENDPOINT: "http://127.0.0.1:9223"\n DOCKER_GIT_PROJECT_CONTAINER_NAME: "${ config . containerName } "\n DOCKER_GIT_BROWSER_CONTAINER_NAME: "${ browserContainerName } "\n DOCKER_GIT_BROWSER_IMAGE_NAME: "${ browserImageName } "\n DOCKER_GIT_BROWSER_VOLUME_NAME: "${ browserVolumeName } "\n${
116125 renderBrowserLimitEnv ( "DOCKER_GIT_BROWSER_CPU_LIMIT" , resourceLimits ?. cpuLimit )
@@ -137,7 +146,8 @@ const normalizeComposeResourceLimits = (
137146
138147const buildComposeFragments = (
139148 config : TemplateConfig ,
140- resourceLimits : ComposeResourceLimits
149+ resourceLimits : ComposeResourceLimits ,
150+ options : DockerComposeRenderOptions
141151) : ComposeFragments => {
142152 const networkMode = config . dockerNetworkMode
143153 const networkName = resolveComposeNetworkName ( config )
@@ -151,7 +161,7 @@ const buildComposeFragments = (
151161 const maybeClaudeAuthLabelEnv = renderClaudeAuthLabelEnv ( claudeAuthLabel )
152162 const maybeAgentModeEnv = renderAgentModeEnv ( config . agentMode )
153163 const maybeAgentAutoEnv = renderAgentAutoEnv ( config . agentAuto )
154- const playwright = buildPlaywrightFragments ( config , resourceLimits . playwright )
164+ const playwright = buildPlaywrightFragments ( config , resourceLimits . playwright , options )
155165
156166 return {
157167 networkMode,
@@ -243,10 +253,11 @@ const renderComposeVolumes = (config: TemplateConfig, maybeBrowserVolume: string
243253
244254export const renderDockerCompose = (
245255 config : TemplateConfig ,
246- resourceLimits ?: ResolvedComposeResourceLimits | ComposeResourceLimits
256+ resourceLimits ?: ResolvedComposeResourceLimits | ComposeResourceLimits ,
257+ options : DockerComposeRenderOptions = defaultDockerComposeRenderOptions
247258) : string => {
248259 const limits = normalizeComposeResourceLimits ( resourceLimits )
249- const fragments = buildComposeFragments ( config , limits )
260+ const fragments = buildComposeFragments ( config , limits , options )
250261 return [
251262 `name: ${ resolveComposeProjectName ( config ) } ` ,
252263 renderComposeServices ( config , fragments , limits ) ,
0 commit comments