将本地构建的 docker 个图像推送到 Digital Ocean Container Registry

Push locally built docker images to Digital Ocean Container Registry

package main

import (
    "context"
    docker "docker.io/go-docker"
    "docker.io/go-docker/api/types"
    "encoding/base64"
    "encoding/json"
    "fmt"
)

var client docker.Client

func main() {

    ctx := context.Background()

    var token = <digital_ocean_access_token>

    var creds = types.AuthConfig{
        Username:      token,
        Password:      token,
        ServerAddress: "registry.digitalocean.com/<registry>",
    }

    _, err = client.ImagePush(ctx,
        "registry.digitalocean.com/<registry>/<repo>:<tag>",
        types.ImagePushOptions{
            RegistryAuth: registryAuth(creds),
        })

    fmt.Println("stream :::::::::::::::::::::> ", err)

}

func registryAuth(creds types.AuthConfig) string {
    b, err := json.Marshal(&creds)
    if err != nil {
        panic(err)
    }
    return base64.StdEncoding.EncodeToString(b)
}

我现在的代码如上: 我能够在注册表中成功登录,但是在推送注册表时我做错了 main() 调用向我展示了这个:

stream :::::::::::::::::::::>  error during connect: Post "/images/registry.digitalocean.com/<registry>/<repo>/push?tag=<tag>": unsupported protocol scheme ""

您正在使用的 go-docker 库已过时,您应该将其替换为较新的库 https://pkg.go.dev/github.com/docker/docker。 这将解决您的 unsupported scheme issue 问题。