gpt4 book ai didi

docker cli swarm 包导入问题

转载 作者:行者123 更新时间:2023-12-04 11:35:07 26 4
gpt4 key购买 nike

我正在尝试使用 docker/cli我自己的项目中的客户端库来创建/管理堆栈。
但是,我在构建项目时遇到了问题。

代码如下:

package main

import (
"fmt"
"log"

"github.com/docker/cli/cli/command"
"github.com/docker/cli/cli/command/stack"
"github.com/docker/cli/cli/flags"
)

func main() {

cli, err := command.NewDockerCli(command.WithStandardStreams())
if err != nil {
log.Fatal(err)
}

cli.Initialize(flags.NewClientOptions())

cmd := stack.NewStackCommand(cli)
cmd.SetArgs([]string{"deploy", "--compose-file", "docker-compose.yml", "test"})

err = cmd.Execute()
if err != nil {
log.Fatal(err)
}

fmt.Println("success!")
}

我已经设置了一个最小的 go.mod:
module github.com/dev/test

go 1.16

当我运行时 go get ;我收到以下错误:
github.com/dev/test imports
github.com/docker/cli/cli/command/stack imports
github.com/docker/cli/cli/command/service imports
github.com/docker/swarmkit/api/defaults: cannot find module providing package github.com/docker/swarmkit/api/defaults
github.com/dev/test imports
github.com/docker/cli/cli/command/stack imports
github.com/docker/cli/cli/command/service imports
github.com/docker/swarmkit/api/genericresource: cannot find module providing package github.com/docker/swarmkit/api/genericresource
github.com/dev/test imports
github.com/docker/cli/cli/command/stack imports
github.com/docker/cli/cli/command/service imports
github.com/docker/swarmkit/api imports
google.golang.org/grpc/transport: cannot find module providing package google.golang.org/grpc/transport

我对 docker/cli 有了更深入的了解repo 并且该项目似乎没有使用 go 模块;相反,它使用旧的 vendor目录方法。
我想知道如何让项目编译。 go get有办法吗?自动引用 vendor 中的包导入目录 docker/cli项目?

最佳答案

默认情况下,go命令只会添加模块的最新标记版本,以解决缺少的依赖项。
根据 https://github.com/docker/swarmkit/tags ,最新(也是唯一)标记版本 github.com/docker/swarmkitv1.12.0 ,回到 2016 年(!),在那个时间点 api/defaultsapi/genericresource包尚不存在。
你可以问go通过显式传递版本的提交哈希或分支名称来获取比标记版本更新的依赖项的命令。例如,截至我撰写此评论时的最新提交是 2dcf70aafdc9ea55af3aaaeca440638cde0ecda6 ,因此您可以将该提交传递给 go get ,并且它似乎从那时开始正确构建:

$ go get -d github.com/docker/swarmkit/api/...@2dcf70aafdc9ea55af3aaaeca440638cde0ecda6
go: downloading github.com/docker/swarmkit v1.12.1-0.20210611195518-2dcf70aafdc9
go: downloading github.com/coreos/etcd v0.5.0-alpha.5
go: downloading github.com/gogo/protobuf v1.3.2
go: downloading github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c
go: downloading github.com/coreos/etcd v3.3.25+incompatible
go: downloading google.golang.org/grpc v1.38.0
go: downloading github.com/golang/protobuf v1.4.2
go: downloading golang.org/x/net v0.0.0-20201021035429-f5854403a974
go: downloading google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013
go: downloading golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f
go: downloading google.golang.org/protobuf v1.25.0
go: downloading golang.org/x/text v0.3.3
go: downloading github.com/sirupsen/logrus v1.8.1
go get: added github.com/coreos/etcd v3.3.25+incompatible
go get: added github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c
go get: added github.com/docker/swarmkit v1.12.1-0.20210611195518-2dcf70aafdc9
go get: added github.com/gogo/protobuf v1.3.2
go get: added github.com/golang/protobuf v1.4.2
go get: added github.com/sirupsen/logrus v1.8.1
go get: added golang.org/x/net v0.0.0-20201021035429-f5854403a974
go get: added golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f
go get: added golang.org/x/text v0.3.3
go get: added google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013
go get: added google.golang.org/grpc v1.38.0
go get: added google.golang.org/protobuf v1.25.0

$ go build github.com/docker/swarmkit/api/...

$

关于docker cli swarm 包导入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68125608/

26 4 0
文章推荐: html - 当光标移动到 Firefox 中的选项时,在