diff --git a/pkg/compose/watch.go b/pkg/compose/watch.go index f469820b137..5e791dfa60c 100644 --- a/pkg/compose/watch.go +++ b/pkg/compose/watch.go @@ -119,23 +119,12 @@ func (s *composeService) watch(ctx context.Context, syncChannel chan bool, proje if options.Build == nil { return fmt.Errorf("--no-build is incompatible with watch action %s in service %s", types.WatchActionRebuild, service.Name) } + // set the service to always be built - watch triggers `Up()` when it receives a rebuild event + service.PullPolicy = types.PullPolicyBuild + project.Services[i] = service } } - if len(services) > 0 && service.Build == nil { - // service explicitly selected for watch has no build section - return fmt.Errorf("can't watch service %q without a build context", service.Name) - } - - if len(services) == 0 && service.Build == nil { - logrus.Debugf("service %q has no build context, skipping watch", service.Name) - continue - } - - // set the service to always be built - watch triggers `Up()` when it receives a rebuild event - service.PullPolicy = types.PullPolicyBuild - project.Services[i] = service - dockerIgnores, err := watch.LoadDockerIgnore(service.Build) if err != nil { return err diff --git a/pkg/watch/dockerignore.go b/pkg/watch/dockerignore.go index 16650999cbe..c51b6fabf1f 100644 --- a/pkg/watch/dockerignore.go +++ b/pkg/watch/dockerignore.go @@ -64,7 +64,10 @@ func (i dockerPathMatcher) MatchesEntireDir(f string) (bool, error) { return true, nil } -func LoadDockerIgnore(build *types.BuildConfig) (*dockerPathMatcher, error) { +func LoadDockerIgnore(build *types.BuildConfig) (PathMatcher, error) { + if build == nil { + return EmptyMatcher{}, nil + } repoRoot := build.Context absRoot, err := filepath.Abs(repoRoot) if err != nil {