在使用dockerfile中使用git拉动时,如何缓存依赖项



说我们在docker映像中有一个:

RUN git clone <url>
RUN git pull
RUN npm install

我们需要git拉力才能始终运行。但是,如果package.json没有更改,我们不需要重新安装。

我有两个问题 - 我们如何让git吸引始终运行?我相信我们可以使用--build-arg

缓存胸围

但是,如果git拉动总是运行,则根据docker的说法, npm install命令也会。

我们可以做的一件事是使用一些自定义逻辑比较package.json文件的sha-sum。

RUN git clone <url>
RUN git pull
ENV package_shasum $(sha1sum package.json)
RUN compare-shasums && npm install

有人知道如何使用Docker做到这一点吗?我们之所

通常,如果我们将代码从主机复制到图像,我们可以使用此技巧来缓存依赖性:

COPY package.json .
RUN npm install
COPY . .

,只有在更改package.json文件时才会运行npm install。但是,如果我们在Dockerfile中进行git,那有点不同,但是我们可以这样做:

RUN git clone git@github.com:ORESoftware/live-mutex.git
ADD https://raw.githubusercontent.com/ORESoftware/live-mutex/master/package.json package.json
RUN npm install
RUN git fetch origin/master
RUN git checkout master

对于bitbucket,URL将是:

https://bitbucket.org/<account>/<repo-name>/raw/<commit-sha-or-HEAD>/<filename>

最新更新