config.go 956 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package docker
  2. import (
  3. "context"
  4. "github.com/docker/docker/client"
  5. api "github.com/porter-dev/porter/api/client"
  6. )
  7. const label = "CreatedByPorterCLI"
  8. // NewAgentFromEnv creates a new Docker agent using the environment variables set
  9. // on the host
  10. func NewAgentFromEnv(ctx context.Context) (*Agent, error) {
  11. cli, err := client.NewClientWithOpts(
  12. client.FromEnv,
  13. client.WithAPIVersionNegotiation(),
  14. )
  15. if err != nil {
  16. return nil, err
  17. }
  18. return &Agent{
  19. Client: cli,
  20. label: label,
  21. }, nil
  22. }
  23. // NewAgentWithAuthGetter returns a docker agent which can connect to a given registry
  24. func NewAgentWithAuthGetter(ctx context.Context, client api.Client, projID uint) (*Agent, error) {
  25. agent, err := NewAgentFromEnv(ctx)
  26. if err != nil {
  27. return nil, err
  28. }
  29. cache := NewFileCredentialsCache()
  30. authGetter := &AuthGetter{
  31. Client: client,
  32. Cache: cache,
  33. ProjectID: projID,
  34. }
  35. agent.authGetter = authGetter
  36. return agent, nil
  37. }