由于我已经将go-sqlite3作为依赖项安装在go项目中,所以我的码头构建时间开始在1分钟左右振荡。
我试图通过使用go mod download缓存依赖项来优化构建,但它并没有减少整个构建时间。
然后我发现
go-sqlite3 3是一个启用CGO的包,您需要设置环境变量CGO_ENABLED=1,并且在您的路径中有一个gcc编译。
因此,我运行go install github.com/mattn/go-sqlite3作为额外的步骤,它将构建时间减少到17s~
我也试过了一些建议,但这对减少构建时间没有帮助,所以明确地安装库是实现这一目标的必要条件。
## Build
FROM golang:1.16-buster AS build
WORKDIR /app
# Download dependencies
COPY go.mod .
COPY go.sum .
RUN go mod download
RUN go install github.com/mattn/go-sqlite3 //this reduced build time to around 17s~
COPY . .
RUN go build -o /myapp但不知何故,我还是不满意这个解决办法。我不明白为什么添加这个包会使我的构建如此长,以及为什么我需要显式地安装它以避免如此长的构建时间。另外,下载后安装所有软件包不是更好吗?
你认为有什么明显的方法来改善我目前的码头建设吗?
发布于 2021-07-20 15:11:06
事实上,基于C的SQLite包的构建只需很长时间。我现在自己用,是的,每次都很痛苦。我也对此感到不满,并一直在寻找替代方案。我一直忙于其他项目,但我确实找到了这个QL 1包,您可以不用C2构建它。
go build -tags purego或者,如果您只需要只读,可以尝试SQLittle 3。
https://stackoverflow.com/questions/68456778
复制相似问题