在Go语言中使用Docker合成包时,创建的合成项目未列出

von4xj4u  于 2022-12-25  发布在  Go
关注(0)|答案(1)|浏览(113)

我尝试在Golang中构建一个简单的代码(https://go.dev/play/p/9fcBrgupBpW),以便与Docker Compose交互。
问题是-基于给定的docker-compose.yml文件创建合成项目后,实际上没有列出任何项目。
我们所期望的是

$ docker compose ls -a
NAME                STATUS              CONFIG FILES
wp                  created(2)          /home/ubuntu/junk/wp/docker-compose.yml

任何帮助是非常感谢!

更新1

检查由我的代码创建的容器,我注意到缺少com.docker.compose.project

"Labels": {
                "com.docker.compose.config-hash": "350500cdc96e61d71aaecffc207b3b5fd3acbd3e76f29fd278be28265052d7e6",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.depends_on": ""
            }

有没有人知道我的密码是怎么丢失的?谢谢!

sbtkgmzw

sbtkgmzw1#

显然projectOptions不是公共的,所以我必须在代码中重新创建相同的逻辑才能使其工作:

所以我的代码最后是

func (s *service) create(ctx context.Context) {
    yamlFilePath := "/home/ubuntu/junk/wp/docker-compose.yml"

    options, err := cli.NewProjectOptions(
        []string{yamlFilePath},
        cli.WithResolvedPaths(true),
        cli.WithOsEnv,
        cli.WithDotEnv,
        cli.WithConfigFileEnv,
        cli.WithDefaultConfigPath,
    )
    if err != nil {
        panic(err)
    }

    project, err := cli.ProjectFromOptions(options)
    if err != nil {
        panic(err)
    }

    for i, s := range project.Services {
        s.CustomLabels = map[string]string{
            api.ProjectLabel:     project.Name,
            api.ServiceLabel:     s.Name,
            api.VersionLabel:     api.ComposeVersion,
            api.WorkingDirLabel:  project.WorkingDir,
            api.ConfigFilesLabel: strings.Join(project.ComposeFiles, ","),
            api.OneoffLabel:      "False", // default, will be overridden by `run` command
        }
        if options.EnvFile != "" {
            s.CustomLabels[api.EnvironmentFileLabel] = options.EnvFile
        }
        project.Services[i] = s
    }

    if err := s.apiService.Create(ctx, project, api.CreateOptions{}); err != nil {
        panic(err)
    }
}

基本上我从www.example.com复制了相同的代码https://github.com/docker/compose/blob/v2/cmd/compose/compose.go#L190-L203

相关问题