containerdworker.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package worker
  2. import (
  3. "context"
  4. mobyexporter "github.com/docker/docker/builder/builder-next/exporter"
  5. "github.com/docker/docker/builder/builder-next/exporter/overrides"
  6. "github.com/moby/buildkit/client"
  7. "github.com/moby/buildkit/exporter"
  8. "github.com/moby/buildkit/session"
  9. "github.com/moby/buildkit/worker/base"
  10. )
  11. // ContainerdWorker is a local worker instance with dedicated snapshotter, cache, and so on.
  12. type ContainerdWorker struct {
  13. *base.Worker
  14. }
  15. // NewContainerdWorker instantiates a local worker.
  16. func NewContainerdWorker(ctx context.Context, wo base.WorkerOpt) (*ContainerdWorker, error) {
  17. bw, err := base.NewWorker(ctx, wo)
  18. if err != nil {
  19. return nil, err
  20. }
  21. return &ContainerdWorker{Worker: bw}, nil
  22. }
  23. // Exporter returns exporter by name
  24. func (w *ContainerdWorker) Exporter(name string, sm *session.Manager) (exporter.Exporter, error) {
  25. switch name {
  26. case mobyexporter.Moby:
  27. exp, err := w.Worker.Exporter(client.ExporterImage, sm)
  28. if err != nil {
  29. return nil, err
  30. }
  31. return overrides.NewExporterWrapper(exp)
  32. default:
  33. return w.Worker.Exporter(name, sm)
  34. }
  35. }