我最近切换到多阶段docker构建,并且看起来在中间构建上没有任何缓存.我不确定这是否是一个限制器限制,某些东西是不可用的,或者我是否做错了什么.
我在新版本开始时从最终版本中拉出 - 并执行--cache-,但它始终运行完整版本.
如何创建包含原始文件中存储的所有值的Go上下文的副本(如果愿意,则为克隆),但在原始文件中不会被取消?
它似乎对我来说是一个有效的用例.假设我有一个http请求,并且在将响应返回给客户端后取消其上下文,并且我需要在单独的goroutine中在此请求的末尾运行异步任务,该任务很可能比父上下文更长.
func Handler(ctx context.Context) (interface{}, error) {
result := doStuff(ctx)
newContext := howDoICloneYou(ctx)
go func() {
doSomethingElse(newContext)
}()
return result
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议如何做到这一点?
当然,我可以跟踪可能放入上下文的所有值,创建一个新的后台ctx,然后只是迭代每个可能的值并复制......但这似乎很乏味,很难在大型代码库中进行管理.