说我们在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>