Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用git pull-in Dockerfile时如何缓存依赖项_Docker_Ssh_Sha1_Sha - Fatal编程技术网

使用git pull-in Dockerfile时如何缓存依赖项

使用git pull-in Dockerfile时如何缓存依赖项,docker,ssh,sha1,sha,Docker,Ssh,Sha1,Sha,假设我们在docker图像中有此内容: RUN git clone <url> RUN git pull RUN npm install 有人知道如何和Docker合作吗? 我们在Docker中而不是在容器外部执行git操作并将文件复制到容器中的原因是为了使Jenkins更易于使用。通常,如果我们将代码从主机复制到映像,我们可以使用以下技巧缓存依赖项: COPY package.json . RUN npm install COPY . . 如果package.json文件已更改

假设我们在docker图像中有此内容:

RUN git clone <url>
RUN git pull
RUN npm install
有人知道如何和Docker合作吗?
我们在Docker中而不是在容器外部执行git操作并将文件复制到容器中的原因是为了使Jenkins更易于使用。

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

COPY package.json .
RUN npm install
COPY . .
如果package.json文件已更改,则只会运行
npm install
。 但是如果我们在Dockerfile中执行git pull,那么会有点不同,但是我们可以这样做:

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>
https://bitbucket.org///raw//

我不相信您可以让您的
git pull
步骤始终运行,除非您在其上或之前的步骤上使用了一些构建参数。当它运行时,后续步骤也将运行。在我看来,这种方法造成的问题比解决的问题多。我们正在与Jenkins合作,并以“通常的方式”愉快地构建东西——在每个git push或其他适当的逻辑上构建一个新映像。git push触发Jenkins构建,docker映像构建将提取新代码,这似乎没有什么区别。将它放在映像/容器中意味着更少的jenkins配置,我们可以在本地运行它,这与在jenkins上运行相同。
https://bitbucket.org/<account>/<repo-name>/raw/<commit-sha-or-HEAD>/<filename>