mirror of https://github.com/docker/compose.git
watch: enable tar-based syncer by default (#10877)
Swap the default implementation now that batching is merged. Keeping the `docker cp` based implementation around for the moment, but it needs to be _explicitly_ disabled now by setting `COMPOSE_EXPERIMENTAL_WATCH_TAR=0`. After the next release, we should remove the `docker cp` implementation entirely. Signed-off-by: Milas Bowman <milas.bowman@docker.com>
This commit is contained in:
parent
b406b393bf
commit
fd8ab2f7ac
|
@ -67,22 +67,32 @@ type fileEvent struct {
|
|||
Action WatchAction
|
||||
}
|
||||
|
||||
// getSyncImplementation returns the the tar-based syncer unless it has been explicitly
|
||||
// disabled with `COMPOSE_EXPERIMENTAL_WATCH_TAR=0`. Note that the absence of the env
|
||||
// var means enabled.
|
||||
func (s *composeService) getSyncImplementation(project *types.Project) sync.Syncer {
|
||||
var useTar bool
|
||||
if useTarEnv, ok := os.LookupEnv("COMPOSE_EXPERIMENTAL_WATCH_TAR"); ok {
|
||||
useTar, _ = strconv.ParseBool(useTarEnv)
|
||||
} else {
|
||||
useTar = true
|
||||
}
|
||||
if useTar {
|
||||
return sync.NewTar(project.Name, tarDockerClient{s: s})
|
||||
}
|
||||
|
||||
return sync.NewDockerCopy(project.Name, s, s.stdinfo())
|
||||
}
|
||||
|
||||
func (s *composeService) Watch(ctx context.Context, project *types.Project, services []string, _ api.WatchOptions) error { //nolint: gocyclo
|
||||
_, err := s.prepareProjectForBuild(project, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var syncer sync.Syncer
|
||||
if useTar, _ := strconv.ParseBool(os.Getenv("COMPOSE_EXPERIMENTAL_WATCH_TAR")); useTar {
|
||||
syncer = sync.NewTar(project.Name, tarDockerClient{s: s})
|
||||
} else {
|
||||
syncer = sync.NewDockerCopy(project.Name, s, s.stdinfo())
|
||||
}
|
||||
|
||||
if err := project.ForServices(services); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
syncer := s.getSyncImplementation(project)
|
||||
eg, ctx := errgroup.WithContext(ctx)
|
||||
watching := false
|
||||
for i := range project.Services {
|
||||
|
|
|
@ -20,6 +20,7 @@ import (
|
|||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync/atomic"
|
||||
"testing"
|
||||
|
@ -73,9 +74,7 @@ func doTest(t *testing.T, svcName string, tarSync bool) {
|
|||
env := []string{
|
||||
"COMPOSE_FILE=" + composeFilePath,
|
||||
"COMPOSE_PROJECT_NAME=" + projName,
|
||||
}
|
||||
if tarSync {
|
||||
env = append(env, "COMPOSE_EXPERIMENTAL_WATCH_TAR=1")
|
||||
"COMPOSE_EXPERIMENTAL_WATCH_TAR=" + strconv.FormatBool(tarSync),
|
||||
}
|
||||
|
||||
cli := NewCLI(t, WithEnv(env...))
|
||||
|
|
Loading…
Reference in New Issue