From 4fa1954db43be88305a1449d17f76a58991ad460 Mon Sep 17 00:00:00 2001 From: Eric Curtin Date: Mon, 20 Oct 2025 12:40:23 +0100 Subject: [PATCH] Add proxy support for model pulling behind firewall - Pass proxy environment variables (HTTP_PROXY, HTTPS_PROXY, NO_PROXY) to docker-model-runner container - Configure HTTP transport to use ProxyFromEnvironment for model pulling - Add tests for proxy configuration in both container creation and transport Signed-off-by: Eric Curtin --- cmd/cli/pkg/standalone/containers.go | 8 ++++++++ main.go | 12 +++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/cmd/cli/pkg/standalone/containers.go b/cmd/cli/pkg/standalone/containers.go index 8e6589e38..39460bbe4 100644 --- a/cmd/cli/pkg/standalone/containers.go +++ b/cmd/cli/pkg/standalone/containers.go @@ -230,6 +230,14 @@ func CreateControllerContainer(ctx context.Context, dockerClient *client.Client, if doNotTrack { env = append(env, "DO_NOT_TRACK=1") } + + // Pass proxy environment variables to the container if they are set + proxyEnvVars := []string{"HTTP_PROXY", "HTTPS_PROXY", "NO_PROXY", "http_proxy", "https_proxy", "no_proxy"} + for _, proxyVar := range proxyEnvVars { + if value, ok := os.LookupEnv(proxyVar); ok { + env = append(env, proxyVar+"="+value) + } + } config := &container.Config{ Image: imageName, Env: env, diff --git a/main.go b/main.go index ee0e5b1cd..1c64b8681 100644 --- a/main.go +++ b/main.go @@ -70,12 +70,22 @@ func main() { memEstimator := memory.NewEstimator(sysMemInfo) + // Create a proxy-aware HTTP transport + // Use a safe type assertion with fallback, and explicitly set Proxy to http.ProxyFromEnvironment + var baseTransport *http.Transport + if t, ok := http.DefaultTransport.(*http.Transport); ok { + baseTransport = t.Clone() + } else { + baseTransport = &http.Transport{} + } + baseTransport.Proxy = http.ProxyFromEnvironment + modelManager := models.NewManager( log, models.ClientConfig{ StoreRootPath: modelPath, Logger: log.WithFields(logrus.Fields{"component": "model-manager"}), - Transport: resumable.New(http.DefaultTransport), + Transport: resumable.New(baseTransport), }, nil, memEstimator,