本文整理汇总了Golang中github.com/docker/distribution/reference.Parse函数的典型用法代码示例。如果您正苦于以下问题:Golang Parse函数的具体用法?Golang Parse怎么用?Golang Parse使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Parse函数的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Set
func (m customImageMap) Set(value string) error {
parts := strings.Split(value, ",")
if len(parts) != 2 {
return errors.New("invalid custome image format, expected \"name,reference\"")
}
ref, err := reference.Parse(parts[0])
if err != nil {
return err
}
namedTagged, ok := ref.(reference.NamedTagged)
if !ok {
return fmt.Errorf("reference %s must contain name and tag", ref.String())
}
source, err := reference.ParseNamed(parts[1])
if err != nil {
return err
}
m[parts[0]] = CustomImage{
Source: source.String(),
Target: namedTagged,
}
return nil
}
开发者ID:dmcgowan,项目名称:golem,代码行数:25,代码来源:configuration.go
示例2: startTimer
func (ttles *TTLExpirationScheduler) startTimer(entry *schedulerEntry, ttl time.Duration) *time.Timer {
return time.AfterFunc(ttl, func() {
ttles.Lock()
defer ttles.Unlock()
var f expiryFunc
switch entry.EntryType {
case entryTypeBlob:
f = ttles.onBlobExpire
case entryTypeManifest:
f = ttles.onManifestExpire
default:
f = func(reference.Reference) error {
return fmt.Errorf("scheduler entry type")
}
}
ref, err := reference.Parse(entry.Key)
if err == nil {
if err := f(ref); err != nil {
context.GetLogger(ttles.ctx).Errorf("Scheduler error returned from OnExpire(%s): %s", entry.Key, err)
}
} else {
context.GetLogger(ttles.ctx).Errorf("Error unpacking reference: %s", err)
}
delete(ttles.entries, entry.Key)
ttles.indexDirty = true
})
}
开发者ID:CowLeo,项目名称:distribution,代码行数:31,代码来源:scheduler.go
示例3: matchImageIDOnly
// matchImageIDOnly checks that the given image specifier is a digest-only
// reference, and that it matches the given image.
func matchImageIDOnly(inspected dockertypes.ImageInspect, image string) bool {
// If the image ref is literally equal to the inspected image's ID,
// just return true here (this might be the case for Docker 1.9,
// where we won't have a digest for the ID)
if inspected.ID == image {
return true
}
// Otherwise, we should try actual parsing to be more correct
ref, err := dockerref.Parse(image)
if err != nil {
glog.V(4).Infof("couldn't parse image reference %q: %v", image, err)
return false
}
digest, isDigested := ref.(dockerref.Digested)
if !isDigested {
glog.V(4).Infof("the image reference %q was not a digest reference")
return false
}
id, err := dockerdigest.ParseDigest(inspected.ID)
if err != nil {
glog.V(4).Infof("couldn't parse image ID reference %q: %v", id, err)
return false
}
if digest.Digest().Algorithm().String() == id.Algorithm().String() && digest.Digest().Hex() == id.Hex() {
return true
}
glog.V(4).Infof("The reference %s does not directly refer to the given image's ID (%q)", image, inspected.ID)
return false
}
开发者ID:Q-Lee,项目名称:kubernetes,代码行数:36,代码来源:docker.go
示例4: ensureImage
func ensureImage(cli DockerClient, image string) (string, error) {
ctx := context.Background()
info, _, err := cli.ImageInspectWithRaw(ctx, image, false)
if err == nil {
logrus.Debugf("Image found locally %s", image)
return info.ID, nil
}
if !client.IsErrImageNotFound(err) {
logrus.Errorf("Error inspecting image %q: %v", image, err)
return "", err
}
// Image must be tagged reference if it does not exist
ref, err := reference.Parse(image)
if err != nil {
logrus.Errorf("Image is not valid reference %q: %v", image, err)
return "", err
}
tagged, ok := ref.(reference.NamedTagged)
if !ok {
logrus.Errorf("Tagged reference required %q", image)
return "", errors.New("invalid reference, tag needed")
}
pullStart := time.Now()
pullOptions := types.ImagePullOptions{
PrivilegeFunc: registryAuthNotSupported,
}
resp, err := cli.ImagePull(ctx, tagged.String(), pullOptions)
if err != nil {
logrus.Errorf("Error pulling image %q: %v", tagged.String(), err)
return "", err
}
defer resp.Close()
outFd, isTerminalOut := term.GetFdInfo(os.Stdout)
if err = jsonmessage.DisplayJSONMessagesStream(resp, os.Stdout, outFd, isTerminalOut, nil); err != nil {
logrus.Errorf("Error copying pull output: %v", err)
return "", err
}
// TODO: Get pulled digest
logFields := logrus.Fields{
timerKey: time.Since(pullStart),
"image": tagged.String(),
}
logrus.WithFields(logFields).Info("image pulled")
info, _, err = cli.ImageInspectWithRaw(ctx, tagged.String(), false)
if err != nil {
return "", nil
}
return info.ID, nil
}
开发者ID:docker,项目名称:golem,代码行数:57,代码来源:runner.go
示例5: testRefs
func testRefs(t *testing.T) (reference.Reference, reference.Reference, reference.Reference) {
ref1, err := reference.Parse("[email protected]:aaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
if err != nil {
t.Fatalf("could not parse reference: %v", err)
}
ref2, err := reference.Parse("[email protected]:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")
if err != nil {
t.Fatalf("could not parse reference: %v", err)
}
ref3, err := reference.Parse("[email protected]:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc")
if err != nil {
t.Fatalf("could not parse reference: %v", err)
}
return ref1, ref2, ref3
}
开发者ID:CowLeo,项目名称:distribution,代码行数:18,代码来源:scheduler_test.go
示例6: ParseImageName
// parseImageName parses a docker image string into two parts: repo and tag.
// If tag is empty, return the defaultImageTag.
func ParseImageName(image string) (string, string) {
ref, _ := reference.Parse(image)
switch ref := ref.(type) {
default:
return ref.String(), defaultImageTag
case reference.NamedTagged:
return ref.Name(), ref.Tag()
case reference.Named:
return ref.Name(), defaultImageTag
}
}
开发者ID:tv42,项目名称:pachyderm,代码行数:13,代码来源:parsers.go
示例7: getNamedTagged
func getNamedTagged(image string) (reference.NamedTagged, error) {
ref, err := reference.Parse(image)
if err != nil {
return nil, err
}
named, ok := ref.(reference.NamedTagged)
if !ok {
return nil, fmt.Errorf("Image reference must have name and tag: %s", image)
}
return named, nil
}
开发者ID:carriercomm,项目名称:golem,代码行数:11,代码来源:configuration.go
示例8: assertTagged
func assertTagged(image string) reference.NamedTagged {
ref, err := reference.Parse(image)
if err != nil {
logrus.Panicf("Invalid reference %q: %v", image, err)
}
named, ok := ref.(reference.NamedTagged)
if !ok {
logrus.Panicf("Image reference must have name and tag: %s", image)
}
return named
}
开发者ID:carriercomm,项目名称:golem,代码行数:12,代码来源:configuration.go
示例9: newSuiteConfiguration
func newSuiteConfiguration(path string, config suiteConfiguration) (*configurationSuite, error) {
customImages := make([]CustomImage, 0, len(config.CustomImages))
for _, value := range config.CustomImages {
ref, err := reference.Parse(value.Tag)
if err != nil {
return nil, err
}
target, ok := ref.(reference.NamedTagged)
if !ok {
return nil, fmt.Errorf("expecting name:tag for image target, got %s", value.Tag)
}
customImages = append(customImages, CustomImage{
Source: value.Default,
Target: target,
})
}
images := make([]reference.NamedTagged, 0, len(config.Images))
for _, image := range config.Images {
named, err := getNamedTagged(image)
if err != nil {
return nil, err
}
images = append(images, named)
}
var base reference.NamedTagged
if config.Base != "" {
var err error
base, err = getNamedTagged(config.Base)
if err != nil {
return nil, err
}
}
name := config.Name
if name == "" {
name = filepath.Base(path)
}
return &configurationSuite{
config: config,
path: path,
base: base,
customImages: customImages,
images: images,
resolvedName: name,
}, nil
}
开发者ID:dmcgowan,项目名称:golem,代码行数:50,代码来源:configuration.go
示例10: populateTestStorage
func populateTestStorage(
t *testing.T,
driver driver.StorageDriver,
setManagedByOpenShift bool,
schemaVersion int,
repoImages map[string]int,
testImages map[string][]*imageapi.Image,
) (map[string][]*imageapi.Image, error) {
ctx := context.Background()
reg, err := storage.NewRegistry(ctx, driver)
if err != nil {
t.Fatalf("error creating registry: %v", err)
}
result := make(map[string][]*imageapi.Image)
for key, value := range testImages {
images := make([]*imageapi.Image, len(value))
copy(images, value)
result[key] = images
}
for imageReference := range repoImages {
parsed, err := reference.Parse(imageReference)
if err != nil {
t.Fatalf("failed to parse reference %q: %v", imageReference, err)
}
namedTagged, ok := parsed.(reference.NamedTagged)
if !ok {
t.Fatalf("expected NamedTagged reference, not %T", parsed)
}
imageCount := repoImages[imageReference]
for i := 0; i < imageCount; i++ {
img, err := storeTestImage(ctx, reg, namedTagged, schemaVersion, setManagedByOpenShift)
if err != nil {
t.Fatal(err)
}
arr := result[imageReference]
t.Logf("created image %[email protected]%s image with layers:", namedTagged.Name(), img.Name)
for _, l := range img.DockerImageLayers {
t.Logf(" %s of size %d", l.Name, l.LayerSize)
}
result[imageReference] = append(arr, img)
}
}
return result, nil
}
开发者ID:juanluisvaladas,项目名称:origin,代码行数:49,代码来源:repositorymiddleware_test.go
示例11: mustImage
func mustImage(source, target, version string) CustomImage {
ref, err := reference.Parse(target)
if err != nil {
panic(err)
}
namedTagged, ok := ref.(reference.NamedTagged)
if !ok {
panic("must provided named tagged for image target")
}
return CustomImage{
Source: source,
Target: namedTagged,
Version: version,
}
}
开发者ID:docker,项目名称:golem,代码行数:16,代码来源:matrix_test.go
示例12: tagImage
func tagImage(ctx context.Context, cli DockerClient, img, tag string) error {
ref, err := reference.Parse(tag)
if err != nil {
return fmt.Errorf("invalid tag %s: %v", tag, err)
}
namedTagged, ok := ref.(reference.NamedTagged)
if !ok {
return fmt.Errorf("expecting named tagged reference: %s", tag)
}
tagOptions := types.ImageTagOptions{
Force: true,
}
if err := cli.ImageTag(ctx, img, namedTagged.String(), tagOptions); err != nil {
return fmt.Errorf("error tagging image %s as %s: %v", img, tag, err)
}
return nil
}
开发者ID:docker,项目名称:golem,代码行数:18,代码来源:suite.go
示例13: tagImage
func tagImage(client *dockerclient.Client, img, tag string) error {
ref, err := reference.Parse(tag)
if err != nil {
return fmt.Errorf("invalid tag %s: %v", tag, err)
}
namedTagged, ok := ref.(reference.NamedTagged)
if !ok {
return fmt.Errorf("expecting named tagged reference: %s", tag)
}
tagOptions := dockerclient.TagImageOptions{
Repo: namedTagged.Name(),
Tag: namedTagged.Tag(),
Force: true,
}
if err := client.TagImage(img, tagOptions); err != nil {
return fmt.Errorf("error tagging image %s as %s: %v", img, tag, err)
}
return nil
}
开发者ID:aaronlehmann,项目名称:golem,代码行数:20,代码来源:suite.go
示例14: ensureImage
func ensureImage(client DockerClient, image string) (string, error) {
info, err := client.InspectImage(image)
if err == nil {
logrus.Debugf("Image found locally %s", image)
return info.ID, nil
}
if err != dockerclient.ErrNoSuchImage {
logrus.Errorf("Error inspecting image %q: %v", image, err)
return "", err
}
// Image must be tagged reference if it does not exist
ref, err := reference.Parse(image)
if err != nil {
logrus.Debugf("Image is not valid reference %q: %v", image, err)
}
tagged, ok := ref.(reference.NamedTagged)
if !ok {
logrus.Debugf("Tagged reference required %q", image)
return "", errors.New("invalid reference, tag needed")
}
logrus.Infof("Pulling image %s", tagged.String())
pullOptions := dockerclient.PullImageOptions{
Repository: tagged.Name(),
Tag: tagged.Tag(),
OutputStream: os.Stdout,
}
if err := client.PullImage(pullOptions, dockerclient.AuthConfiguration{}); err != nil {
logrus.Errorf("Error pulling image %q: %v", tagged.String(), err)
return "", err
}
// TODO: Get pulled digest and inspect by digest
info, err = client.InspectImage(tagged.String())
if err != nil {
return "", nil
}
return info.ID, nil
}
开发者ID:aaronlehmann,项目名称:golem,代码行数:41,代码来源:runner.go
示例15: Set
func (m customImageMap) Set(value string) error {
parts := strings.Split(value, ",")
if len(parts) < 2 || len(parts) > 3 {
return errors.New("invalid custom image format, expected \"name,reference[,version]\"")
}
ref, err := reference.Parse(parts[0])
if err != nil {
return err
}
namedTagged, ok := ref.(reference.NamedTagged)
if !ok {
return fmt.Errorf("reference %s must contain name and tag", ref.String())
}
source, err := reference.ParseNamed(parts[1])
if err != nil {
return err
}
var version string
if len(parts) == 3 {
version = parts[2]
} else if refTag, ok := source.(reference.Tagged); ok {
version = refTag.Tag()
} else {
// TODO: In this case is it better to leave it blank and use the default
// from the configuration file?
version = namedTagged.Tag()
}
key := fmt.Sprintf("%s,%s", parts[0], parts[1])
m[key] = CustomImage{
Source: source.String(),
Target: namedTagged,
Version: version,
}
return nil
}
开发者ID:docker,项目名称:golem,代码行数:38,代码来源:configuration.go
示例16: TestValidateManifest
// TestValidateManifest verifies the validateManifest function
func TestValidateManifest(t *testing.T) {
expectedDigest, err := reference.Parse("[email protected]:02fee8c3220ba806531f606525eceb83f4feb654f62b207191b1c9209188dedd")
if err != nil {
t.Fatal("could not parse reference")
}
expectedFSLayer0 := digest.Digest("sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4")
// Good manifest
goodManifestBytes, err := ioutil.ReadFile("fixtures/validate_manifest/good_manifest")
if err != nil {
t.Fatal("error reading fixture:", err)
}
var goodSignedManifest schema1.SignedManifest
err = json.Unmarshal(goodManifestBytes, &goodSignedManifest)
if err != nil {
t.Fatal("error unmarshaling manifest:", err)
}
verifiedManifest, err := verifyManifest(&goodSignedManifest, expectedDigest)
if err != nil {
t.Fatal("validateManifest failed:", err)
}
if verifiedManifest.FSLayers[0].BlobSum != expectedFSLayer0 {
t.Fatal("unexpected FSLayer in good manifest")
}
// "Extra data" manifest
extraDataManifestBytes, err := ioutil.ReadFile("fixtures/validate_manifest/extra_data_manifest")
if err != nil {
t.Fatal("error reading fixture:", err)
}
var extraDataSignedManifest schema1.SignedManifest
err = json.Unmarshal(extraDataManifestBytes, &extraDataSignedManifest)
if err != nil {
t.Fatal("error unmarshaling manifest:", err)
}
verifiedManifest, err = verifyManifest(&extraDataSignedManifest, expectedDigest)
if err != nil {
t.Fatal("validateManifest failed:", err)
}
if verifiedManifest.FSLayers[0].BlobSum != expectedFSLayer0 {
t.Fatal("unexpected FSLayer in extra data manifest")
}
// Bad manifest
badManifestBytes, err := ioutil.ReadFile("fixtures/validate_manifest/bad_manifest")
if err != nil {
t.Fatal("error reading fixture:", err)
}
var badSignedManifest schema1.SignedManifest
err = json.Unmarshal(badManifestBytes, &badSignedManifest)
if err != nil {
t.Fatal("error unmarshaling manifest:", err)
}
verifiedManifest, err = verifyManifest(&badSignedManifest, expectedDigest)
if err == nil || !strings.HasPrefix(err.Error(), "image verification failed for digest") {
t.Fatal("expected validateManifest to fail with digest error")
}
}
开发者ID:Neverous,项目名称:other-docker,代码行数:70,代码来源:pull_v2_test.go
示例17: TestRepositoryBlobStat
//.........这里部分代码省略.........
stat: "nm/[email protected]" + etcdOnlyImages["nm/is"].DockerImageLayers[0].Name,
images: []imageapi.Image{*testImages["nm/is:latest"][0]},
imageStreams: []imageapi.ImageStream{
{
ObjectMeta: kapi.ObjectMeta{
Namespace: "nm",
Name: "repo",
},
Status: imageapi.ImageStreamStatus{
Tags: map[string]imageapi.TagEventList{
"latest": {
Items: []imageapi.TagEvent{
{
Image: testImages["nm/is:latest"][0].Name,
},
},
},
},
},
},
},
expectedError: distribution.ErrBlobUnknown,
},
{
name: "auth not performed",
stat: "nm/[email protected]" + testImages["nm/is:latest"][0].DockerImageLayers[0].Name,
imageStreams: []imageapi.ImageStream{{ObjectMeta: kapi.ObjectMeta{Namespace: "nm", Name: "is"}}},
skipAuth: true,
expectedError: fmt.Errorf("openshift.auth.completed missing from context"),
},
{
name: "deferred error",
stat: "nm/[email protected]" + testImages["nm/is:latest"][0].DockerImageLayers[0].Name,
imageStreams: []imageapi.ImageStream{{ObjectMeta: kapi.ObjectMeta{Namespace: "nm", Name: "is"}}},
deferredErrors: deferredErrors{"nm/is": ErrOpenShiftAccessDenied},
expectedError: ErrOpenShiftAccessDenied,
},
} {
ref, err := reference.Parse(tc.stat)
if err != nil {
t.Errorf("[%s] failed to parse blob reference %q: %v", tc.name, tc.stat, err)
continue
}
canonical, ok := ref.(reference.Canonical)
if !ok {
t.Errorf("[%s] not a canonical reference %q", tc.name, ref.String())
continue
}
cachedLayers, err = newDigestToRepositoryCache(defaultDigestToRepositoryCacheSize)
if err != nil {
t.Fatal(err)
}
ctx := context.Background()
if !tc.skipAuth {
ctx = WithAuthPerformed(ctx)
}
if tc.deferredErrors != nil {
ctx = WithDeferredErrors(ctx, tc.deferredErrors)
}
client := &testclient.Fake{}
client.AddReactor("get", "imagestreams", imagetest.GetFakeImageStreamGetHandler(t, tc.imageStreams...))
client.AddReactor("get", "images", registrytest.GetFakeImageGetHandler(t, tc.images...))
reg, err := newTestRegistry(ctx, client, driver, defaultBlobRepositoryCacheTTL, tc.pullthrough, true)
if err != nil {
t.Errorf("[%s] unexpected error: %v", tc.name, err)
continue
}
repo, err := reg.Repository(ctx, canonical)
if err != nil {
t.Errorf("[%s] unexpected error: %v", tc.name, err)
continue
}
desc, err := repo.Blobs(ctx).Stat(ctx, canonical.Digest())
if err != nil && tc.expectedError == nil {
t.Errorf("[%s] got unexpected stat error: %v", tc.name, err)
continue
}
if err == nil && tc.expectedError != nil {
t.Errorf("[%s] got unexpected non-error", tc.name)
continue
}
if !reflect.DeepEqual(err, tc.expectedError) {
t.Errorf("[%s] got unexpected error: %s", tc.name, diff.ObjectGoPrintDiff(err, tc.expectedError))
continue
}
if tc.expectedError == nil && !reflect.DeepEqual(desc, tc.expectedDescriptor) {
t.Errorf("[%s] got unexpected descriptor: %s", tc.name, diff.ObjectGoPrintDiff(desc, tc.expectedDescriptor))
}
compareActions(t, tc.name, client.Actions(), tc.expectedActions)
}
}
开发者ID:juanluisvaladas,项目名称:origin,代码行数:101,代码来源:repositorymiddleware_test.go
示例18: Images
// Images returns a filtered list of images. filterArgs is a JSON-encoded set
// of filter arguments which will be interpreted by pkg/parsers/filters.
// filter is a shell glob string applied to repository names. The argument
// named all controls whether all images in the graph are filtered, or just
// the heads.
func (daemon *Daemon) Images(filterArgs, filter string, all bool) ([]*types.Image, error) {
var (
allImages map[image.ID]*image.Image
err error
danglingOnly = false
)
imageFilters, err := filters.FromParam(filterArgs)
if err != nil {
return nil, err
}
for name := range imageFilters {
if _, ok := acceptedImageFilterTags[name]; !ok {
return nil, fmt.Errorf("Invalid filter '%s'", name)
}
}
if i, ok := imageFilters["dangling"]; ok {
for _, value := range i {
if v := strings.ToLower(value); v == "true" {
danglingOnly = true
} else if v != "false" {
return nil, fmt.Errorf("Invalid filter 'dangling=%s'", v)
}
}
}
if danglingOnly {
allImages = daemon.imageStore.Heads()
} else {
allImages = daemon.imageStore.Map()
}
images := []*types.Image{}
var filterTagged bool
if filter != "" {
filterRef, err := reference.Parse(filter)
if err == nil { // parse error means wildcard repo
if _, ok := filterRef.(reference.Tagged); ok {
filterTagged = true
}
}
}
for id, img := range allImages {
if _, ok := imageFilters["label"]; ok {
if img.Config == nil {
// Very old image that do not have image.Config (or even labels)
continue
}
// We are now sure image.Config is not nil
if !imageFilters.MatchKVList("label", img.Config.Labels) {
continue
}
}
layerID := img.RootFS.ChainID()
var size int64
if layerID != "" {
l, err := daemon.layerStore.Get(layerID)
if err != nil {
return nil, err
}
size, err = l.Size()
layer.ReleaseAndLog(daemon.layerStore, l)
if err != nil {
return nil, err
}
}
newImage := newImage(img, size)
for _, ref := range daemon.tagStore.References(id) {
if filter != "" { // filter by tag/repo name
if filterTagged { // filter by tag, require full ref match
if ref.String() != filter {
continue
}
} else if matched, err := path.Match(filter, ref.Name()); !matched || err != nil { // name only match, FIXME: docs say exact
continue
}
}
if _, ok := ref.(reference.Digested); ok {
newImage.RepoDigests = append(newImage.RepoDigests, ref.String())
}
if _, ok := ref.(reference.Tagged); ok {
newImage.RepoTags = append(newImage.RepoTags, ref.String())
}
}
if newImage.RepoDigests == nil && newImage.RepoTags == nil {
if all || len(daemon.imageStore.Children(id)) == 0 {
if filter != "" { // skip images with no references if filtering by tag
continue
//.........这里部分代码省略.........
开发者ID:RockaLabs,项目名称:docker,代码行数:101,代码来源:images.go
示例19: NewBuilder
// NewBuilder creates a new builder.
func NewBuilder(daemonURL string, tlsConfig *tls.Config, contextDirectory, dockerfilePath, repoTag string) (*Builder, error) {
// Validate that the context directory exists.
stat, err := os.Stat(contextDirectory)
if err != nil {
return nil, fmt.Errorf("unable to access build context directory: %s", err)
}
if !stat.IsDir() {
return nil, fmt.Errorf("context must be a directory")
}
if dockerfilePath == "" {
// Use Default path.
dockerfilePath = filepath.Join(contextDirectory, "Dockerfile")
}
if _, err := os.Stat(dockerfilePath); err != nil {
return nil, fmt.Errorf("unable to access build file: %s", err)
}
ref, err := reference.Parse(repoTag)
if err != nil {
if err != reference.ErrNameEmpty {
return nil, fmt.Errorf("invalid tag: %s", err)
}
}
client, err := dockerclient.NewDockerClient(daemonURL, tlsConfig)
if err != nil {
return nil, fmt.Errorf("unable to initialize client: %s", err)
}
b := &Builder{
daemonURL: daemonURL,
tlsConfig: tlsConfig,
client: client,
contextDirectory: contextDirectory,
dockerfilePath: dockerfilePath,
ref: ref,
out: os.Stdout,
config: &config{
Labels: map[string]string{},
ExposedPorts: map[string]struct{}{},
Volumes: map[string]struct{}{},
},
}
// Register Dockerfile Directive Handlers
b.handlers = map[string]handlerFunc{
commands.Cmd: b.handleCmd,
commands.Copy: b.handleCopy,
commands.Entrypoint: b.handleEntrypoint,
commands.Env: b.handleEnv,
commands.Expose: b.handleExpose,
commands.Extract: b.handleExtract,
commands.From: b.handleFrom,
commands.Label: b.handleLabel,
commands.Maintainer: b.handleMaintainer,
commands.Run: b.handleRun,
commands.User: b.handleUser,
commands.Volume: b.handleVolume,
commands.Workdir: b.handleWorkdir,
// Not implemented for now:
commands.Add: b.handleAdd,
commands.Onbuild: b.handleOnbuild,
}
if err := b.loadCache(); err != nil {
return nil, fmt.Errorf("unable to load build cache: %s", err)
}
return b, nil
}
开发者ID:dmcgowan,项目名称:golem,代码行数:74,代码来源:builder.go
注:本文中的github.com/docker/distribution/reference.Parse函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论