Implement incremental file sync using client session
Also exposes shared cache and garbage collection/prune for the source data. Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com> Upstream-commit: 5c3d2d552b0430672d5f481ab2d37036f6e92166 Component: engine
This commit is contained in:
@@ -27,6 +27,8 @@ import (
|
||||
swarmrouter "github.com/docker/docker/api/server/router/swarm"
|
||||
systemrouter "github.com/docker/docker/api/server/router/system"
|
||||
"github.com/docker/docker/api/server/router/volume"
|
||||
"github.com/docker/docker/builder/dockerfile"
|
||||
"github.com/docker/docker/builder/fscache"
|
||||
"github.com/docker/docker/cli/debug"
|
||||
"github.com/docker/docker/client/session"
|
||||
"github.com/docker/docker/daemon"
|
||||
@@ -268,7 +270,26 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) {
|
||||
logrus.Fatalf("Error starting cluster component: %v", err)
|
||||
}
|
||||
|
||||
bb, err := buildbackend.NewBackend(d, d, sm, d.IDMappings())
|
||||
builderStateDir := filepath.Join(cli.Config.Root, "builder")
|
||||
|
||||
fsCache, err := fscache.NewFSCache(fscache.Opt{
|
||||
Backend: fscache.NewNaiveCacheBackend(builderStateDir),
|
||||
Root: builderStateDir,
|
||||
GCPolicy: fscache.GCPolicy{ // TODO: expose this in config
|
||||
MaxSize: 1024 * 1024 * 512, // 512MB
|
||||
MaxKeepDuration: 7 * 24 * time.Hour, // 1 week
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to create fscache")
|
||||
}
|
||||
|
||||
manager, err := dockerfile.NewBuildManager(d, sm, fsCache, d.IDMappings())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
bb, err := buildbackend.NewBackend(d, manager, fsCache)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to create buildmanager")
|
||||
}
|
||||
@@ -282,7 +303,7 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) {
|
||||
|
||||
cli.d = d
|
||||
|
||||
initRouter(api, d, c, sm, bb)
|
||||
initRouter(api, d, c, sm, bb, fsCache)
|
||||
|
||||
// process cluster change notifications
|
||||
watchCtx, cancel := context.WithCancel(context.Background())
|
||||
@@ -455,7 +476,7 @@ func loadDaemonCliConfig(opts *daemonOptions) (*config.Config, error) {
|
||||
return conf, nil
|
||||
}
|
||||
|
||||
func initRouter(s *apiserver.Server, d *daemon.Daemon, c *cluster.Cluster, sm *session.Manager, bb *buildbackend.Backend) {
|
||||
func initRouter(s *apiserver.Server, d *daemon.Daemon, c *cluster.Cluster, sm *session.Manager, bb *buildbackend.Backend, bc *fscache.FSCache) {
|
||||
decoder := runconfig.ContainerDecoder{}
|
||||
|
||||
routers := []router.Router{
|
||||
@@ -463,7 +484,7 @@ func initRouter(s *apiserver.Server, d *daemon.Daemon, c *cluster.Cluster, sm *s
|
||||
checkpointrouter.NewRouter(d, decoder),
|
||||
container.NewRouter(d, decoder),
|
||||
image.NewRouter(d, decoder),
|
||||
systemrouter.NewRouter(d, c),
|
||||
systemrouter.NewRouter(d, c, bc),
|
||||
volume.NewRouter(d),
|
||||
build.NewRouter(bb, d),
|
||||
sessionrouter.NewRouter(sm),
|
||||
|
||||
Reference in New Issue
Block a user