现在我的.dockerignore文件具有以下内容:
.vscode
.idea
.git
bin
pkg
我的Dockerfile看起来像:
FROM golang:latest
RUN mkdir -p /app
WORKDIR /app
COPY . .
ENV GOPATH /app
RUN go install huru
EXPOSE 3000
ENTRYPOINT /app/bin/huru
我的问题是-是否应该将pkg文件夹从主机复制到映像?现在我不知道,因为我的dockerignore文件清楚了。
我觉得我应该只将pkg文件夹从主机复制到映像,因为其中可能包含go install
可以使用的预先构建的文件,而不是从github等重新下载源代码? / p>
答案 0 :(得分:2)
就个人而言,我认为将pkg
文件夹从主机复制到映像不是一个好主意,因为:
pkg
文件夹复制。如果您熟悉Java世界,那么使用Maven构建的图像已经遇到了这个问题。为了加快构建速度,有些人正在复制映像中的本地Maven存储库(~/.m2
),以避免重新下载工件。我并不特别同意,因为它们的.m2
文件夹中始终存在损坏的工件的风险:因此,在其计算机上构建的映像将与在干净的环境中构建的映像不同。这取决于您要拥有一致的版本还是快速的版本(我更喜欢前者)。
总而言之,我认为从干净的环境中构建映像,而不依赖于生成映像的主机是一个好习惯。这就是为什么我个人不会在图像内复制任何文件(应用程序源代码除外!)。