55 "fmt"
66 "io"
77 "net/http"
8+ "strings"
89
910 "github.com/docker/docker/pkg/jsonmessage"
1011 "github.com/google/go-containerregistry/pkg/authn"
@@ -14,7 +15,8 @@ import (
1415 "github.com/google/go-containerregistry/pkg/v1/remote"
1516 "github.com/google/go-containerregistry/pkg/v1/remote/transport"
1617 "github.com/loft-sh/devspace/pkg/devspace/config/versions/latest"
17- devspacecontext "github.com/loft-sh/devspace/pkg/devspace/context"
18+ dockerclient "github.com/loft-sh/devspace/pkg/devspace/docker"
19+ "github.com/loft-sh/devspace/pkg/devspace/kubectl"
1820 corev1 "k8s.io/api/core/v1"
1921)
2022
@@ -29,7 +31,7 @@ func HasPushPermission(image *latest.Image) bool {
2931}
3032
3133func IsLocalRegistryFallback (config * latest.Config ) bool {
32- return config .LocalRegistry == nil || (config .LocalRegistry != nil || config .LocalRegistry .Enabled == nil )
34+ return config .LocalRegistry == nil || (config .LocalRegistry != nil && config .LocalRegistry .Enabled == nil )
3335}
3436
3537func IsLocalRegistryEnabled (config * latest.Config ) bool {
@@ -67,13 +69,13 @@ func IsImageAvailableRemotely(ctx context.Context, imageName string) (bool, erro
6769 return image != nil , nil
6870}
6971
70- func CopyImageToRemote (ctx context.Context , imageName string , writer io.Writer ) error {
72+ func CopyImageToRemote (ctx context.Context , client dockerclient. Client , imageName string , writer io.Writer ) error {
7173 ref , err := name .ParseReference (imageName )
7274 if err != nil {
7375 return err
7476 }
7577
76- image , err := daemon .Image (ref , daemon .WithContext (ctx ))
78+ image , err := daemon .Image (ref , daemon .WithContext (ctx ), daemon . WithClient ( client . DockerAPIClient ()) )
7779 if err != nil {
7880 return err
7981 }
@@ -118,17 +120,26 @@ func CopyImageToRemote(ctx context.Context, imageName string, writer io.Writer)
118120 return <- errChan
119121}
120122
121- func UseMinikubeDocker (ctx devspacecontext.Context , image * latest.Image ) bool {
122- // preferMinikube := false
123- var preferMinikube * bool
123+ func UseLocalRegistry (client kubectl.Client , config * latest.Config , skipPush bool ) bool {
124+ if skipPush {
125+ return false
126+ }
124127
125- if image . Docker ! = nil {
126- preferMinikube = image . Docker . PreferMinikube
128+ if client = = nil {
129+ return false
127130 }
128131
129- if image . BuildKit != nil {
130- preferMinikube = image . BuildKit . PreferMinikube
132+ if ! IsLocalRegistryFallback ( config ) {
133+ return IsLocalRegistryEnabled ( config )
131134 }
132135
133- return ctx .KubeClient () != nil && ctx .KubeClient ().CurrentContext () == "minikube" && (preferMinikube == nil || * preferMinikube )
136+ context := client .CurrentContext ()
137+
138+ // Determine if this is a vcluster
139+ isVClusterContext := strings .HasPrefix (context , "vcluster_" )
140+
141+ // Determine if this is a local kubernetes cluster
142+ isLocalKubernetes := kubectl .IsLocalKubernetes (context )
143+
144+ return ! isLocalKubernetes && ! (isVClusterContext && isLocalKubernetes )
134145}
0 commit comments