我知道Golang requests.txt 等效项,但问题的上下文相当不同。
我正在尝试优化 docker 容器内的 golang 程序的构建。我的 dockerfile 看起来像这样:
FROM golang:1.12.5 as builder
WORKDIR $GOPATH/src/test-ldap/
COPY main.go .
RUN go get -d -v ./...
...
虽然我main.go看起来像
package main
import (
"log"
"fmt"
"gopkg.in/ldap.v3"
)
func main() {
...
当然,每次我更改源代码时,docker 层
COPY main.go .都会更改,因此go get需要重新运行命令,并且即使import块未更改也无法从 docker 构建缓存中重用。
现在我当然可以输入类似的内容
RUN go get -d -v log fmt gopkg.in/ldap.v3
并将其放在COPY声明之前,但这违反了所谓的单一事实来源原则。如果我希望添加额外的导入,我将不得不在代码库中的两个不同位置更改相同的内容。
如何将导入要求存储在单独的文件中?在 Go 开发中执行此操作的惯用方法是什么?
30秒到达战场
相关分类