Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Golang api构建docker映像时复制失败_Docker_Go_Dockerfile - Fatal编程技术网

使用Golang api构建docker映像时复制失败

使用Golang api构建docker映像时复制失败,docker,go,dockerfile,Docker,Go,Dockerfile,我试图使用官方GO API构建Docker映像,但在这一行遇到了一个问题: COPY packages /tmp/packages 的 Where packages是docker文件所在目录中的文件夹 如果我只是按照docker文件的路径构建docker映像,它会按照预期构建 我尝试将WORKDIR添加到Dockerfile位于实际Dockerfile中的路径,但它似乎仍然找不到文件夹 有人知道这里发生了什么吗 如果其他人遇到此问题,如果您的主机配置有任何装载,如: &containe

我试图使用官方GO API构建Docker映像,但在这一行遇到了一个问题:

COPY packages /tmp/packages

Where packages是docker文件所在目录中的文件夹

如果我只是按照docker文件的路径构建docker映像,它会按照预期构建

我尝试将WORKDIR添加到Dockerfile位于实际Dockerfile中的路径,但它似乎仍然找不到文件夹


有人知道这里发生了什么吗

如果其他人遇到此问题,如果您的主机配置有任何装载,如:

&container.HostConfig{
    Mounts:[]mount.Mount{
        {
            Source: .../somePath,
            Target: .../somePath,
        }
    }
}
使用正确的生成上下文生成映像:

cli.ImageBuild(context.Background(), tarFile, types.ImageBuildOptions{})

在您传递的tar文件中,…/somePath存在

我花了一天的时间想弄清楚如何用API构建一个映像,然后我深入研究了源代码,找到了一个简洁的解决方案,其中包括使用docker提供的工具创建归档,以下是我的发现,它可能会帮助一些人:

导入“github.com/docker/docker/pkg/archive” reader,err:=archive.TarWithOptions(“path/to/the/project/where/the/dockfile/residence”,&archive.TarOptions{})

因此,TarWithOptions返回我们需要Io.Reader传递给buildContext的内容。 要进一步满足特殊需要,您可以传递以下几个参数:

TarOptions结构{
inclubles[]字符串
ExcludePatterns[]字符串
压缩
诺尔乔恩布尔
UIDMaps[]idtools.IDMap
GIDMaps[]idtools.IDMap
ChownOpts*idtools.Identity
包括来源地布尔
//WhiteoutFormat是whiteout文件的预期磁盘格式。
//此格式将转换为包装上的标准格式
//并从标准格式上拆包。
白纸格式白纸格式
//解包时,指定是否使用
//允许使用非目录,反之亦然。
没有写过的书
//对于创建存档时的每个包含,包含的名称将是
//替换为此映射中的匹配名称。
RebaseNames映射[字符串]字符串
伊努塞恩斯布尔酒店

}

您可以添加docker build命令吗?指向生成上下文很重要,您可以在生成命令中更改它,
docker build-t my image.
点指向您运行该命令的位置
cli.ImageBuild(context.Background(), tarFile, types.ImageBuildOptions{})