Skip to content

Commit b74fb0a

Browse files
authored
Merge pull request #263 from docker/fix-model-pulling-behind-firewall
Add proxy support for model pulling behind firewall
2 parents ed99eef + 4fa1954 commit b74fb0a

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

cmd/cli/pkg/standalone/containers.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,14 @@ func CreateControllerContainer(ctx context.Context, dockerClient *client.Client,
230230
if doNotTrack {
231231
env = append(env, "DO_NOT_TRACK=1")
232232
}
233+
234+
// Pass proxy environment variables to the container if they are set
235+
proxyEnvVars := []string{"HTTP_PROXY", "HTTPS_PROXY", "NO_PROXY", "http_proxy", "https_proxy", "no_proxy"}
236+
for _, proxyVar := range proxyEnvVars {
237+
if value, ok := os.LookupEnv(proxyVar); ok {
238+
env = append(env, proxyVar+"="+value)
239+
}
240+
}
233241
config := &container.Config{
234242
Image: imageName,
235243
Env: env,

main.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,22 @@ func main() {
7070

7171
memEstimator := memory.NewEstimator(sysMemInfo)
7272

73+
// Create a proxy-aware HTTP transport
74+
// Use a safe type assertion with fallback, and explicitly set Proxy to http.ProxyFromEnvironment
75+
var baseTransport *http.Transport
76+
if t, ok := http.DefaultTransport.(*http.Transport); ok {
77+
baseTransport = t.Clone()
78+
} else {
79+
baseTransport = &http.Transport{}
80+
}
81+
baseTransport.Proxy = http.ProxyFromEnvironment
82+
7383
modelManager := models.NewManager(
7484
log,
7585
models.ClientConfig{
7686
StoreRootPath: modelPath,
7787
Logger: log.WithFields(logrus.Fields{"component": "model-manager"}),
78-
Transport: resumable.New(http.DefaultTransport),
88+
Transport: resumable.New(baseTransport),
7989
},
8090
nil,
8191
memEstimator,

0 commit comments

Comments
 (0)