{"record":{"id":"c1e0c3fa976ffa3f","repo":"microsoft/aspire","slug":"one-or-more-container-network-tunnel-proxies-did-not-start","errorCode":null,"errorMessage":"One or more container network tunnel proxies did not start successfully: {details}","messagePattern":"One or more container network tunnel proxies did not start successfully: (.+?)","errorType":"exception","errorClass":"DistributedApplicationException","httpStatus":null,"severity":"error","filePath":"src/Aspire.Hosting/Dcp/ContainerCreator.cs","lineNumber":631,"sourceCode":"        var observedStatus = observedProxy.Status;\n        var running = observedStatus is not null &&\n            string.Equals(observedStatus.State, ContainerNetworkTunnelProxyState.Running, StringComparison.Ordinal);\n\n        const string noDetailsAvailable = \"(no additional error details available)\";\n        if (failed)\n        {\n            _logger.LogError(\n                \"Container network tunnel proxy '{Name}' failed: {Details}\",\n                observedProxy.Metadata.Name,\n                observedProxy.Status?.Message ?? noDetailsAvailable);\n        }\n\n        if (failed || !running)\n        {\n            var details = failed\n                ? $\"'{observedProxy.Metadata.Name}': {observedProxy.Status?.Message ?? noDetailsAvailable}\"\n                : $\"'{observedProxy.Metadata.Name}': did not reach a stable state (current state: '{observedProxy.Status?.State ?? \"(unknown)\"}')\";\n            throw new DistributedApplicationException(\n                $\"One or more container network tunnel proxies did not start successfully: {details}\");\n        }\n    }\n\n    internal async Task<IEnumerable<HostResourceWithEndpoints>> GetHostDependenciesAsync(IResource resource, CancellationToken cancellationToken)\n    {\n        var allDependencies = await ResourceExtensions.GetResourceDependenciesAsync(\n            resource,\n            _executionContext,\n            new ResourceDependencyDiscoveryOptions\n            {\n                DiscoveryMode = ResourceDependencyDiscoveryMode.DirectOnly,\n                CacheAnnotationCallbackResults = true\n            },\n            cancellationToken\n        ).ConfigureAwait(false);\n\n        List<HostResourceWithEndpoints> hostDependencies = [.. allDependencies.Select(HostResourceWithEndpoints.Create).OfType<HostResourceWithEndpoints>()];","sourceCodeStart":613,"sourceCodeEnd":649,"githubUrl":"https://github.com/microsoft/aspire/blob/25830f84bd145686607ad00c057b3f84e2e51d43/src/Aspire.Hosting/Dcp/ContainerCreator.cs#L613-L649","documentation":"Aspire starts network tunnel proxy objects so containers can reach host services. WaitForTunnelProxyAsync observes the proxy state; if the proxy failed or never reached a stable running state, a DistributedApplicationException is thrown including the proxy name and its status message or current state.","triggerScenarios":"CreateTunnelProxyResourceAsync waits on a container network tunnel proxy; the proxy enters a Failed state (status message in details) or times out without reaching running (state shown in details).","commonSituations":"Tunnel proxy image pull failures, port conflicts on the host, container runtime (Docker/Podman) not healthy, resource exhaustion preventing the proxy container from starting.","solutions":["Read the details in the message for the proxy's status message or last state","Check the container runtime is running and healthy (docker ps / podman ps)","Look for port conflicts or image pull errors for the tunnel proxy","Retry after fixing the environment; restart DCP/container runtime if stuck"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Verify container runtime health before starting the app host\nvar psi = System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(\"docker\", \"info\") { RedirectStandardOutput = true }); psi!.WaitForExit(5000); if (psi.ExitCode != 0) throw new InvalidOperationException(\"Container runtime not healthy\");","typeGuard":null,"tryCatchPattern":"try { await app.StartAsync(); } catch (DistributedApplicationException ex) when (ex.Message.Contains(\"tunnel proxies did not start\")) { logger.LogError(ex, \"Tunnel proxy failed: {Details}\", ExtractDetails(ex.Message)); /* fix env, then retry */ }","preventionTips":["Ensure Docker/Podman is running and has capacity before launching","Watch for port conflicts on tunnel proxy ports","Check image pull access/network for the tunnel proxy image"],"tags":["containers","tunnel","proxy","networking"],"backgroundTag":"connection-refused","analyzedSha":"25830f84bd145686607ad00c057b3f84e2e51d43","analyzedAt":"2026-09-16T11:10:06.193Z","contentChangedAt":"2026-09-16T11:10:06.193Z","schemaVersion":2},"datasetVersion":"2026-09-21T09:17:21.228Z"}