说我们在Docker映像中有这个了
m,a,i,n
我们需要git pull才能始终运行。但是,如果package.json不变,则无需重新安装。
我有两个问题-如何使git pull始终运行?我相信我们可以使用RUN git clone <url>
RUN git pull
RUN npm install
但是,如果git pull始终运行,则根据docker,--build-arg
命令也将运行。
我们可以做的一件事是使用一些自定义逻辑来比较package.json文件的sha-sum。
npm install
有人知道如何使用Docker吗? 之所以我们在Docker中而不是在容器外部执行git并将文件复制到容器中,是为了使Jenkins更易于使用。
答案 0 :(得分:0)
通常,如果我们将代码从主机复制到映像,则可以使用此技巧来缓存依赖项:
import bs4
import copy
test = '<div class="table-wrap"><table class="wrapped confluenceTable"><colgroup><col/><col/><col/><col/><col/><col/><col/><col/><col/><col/></colgroup><tbody><tr><th class="confluenceTh">Run</th><th class="confluenceTh">Date</th><th class="confluenceTh">Version</th><th class="confluenceTh">Model</th><th class="confluenceTh">OverallPrec</th><th class="confluenceTh">OverallRec</th><th class="confluenceTh"><span>PersonPrec</span></th><th class="confluenceTh"><span>Personrec</span></th><th class="confluenceTh">AnimalF1</th><th class="confluenceTh">VehicleF1</th></tr><tr><td class="confluenceTd">PR-191</td><td class="confluenceTd"><span>15,3/12/19,15:30</span></td><td class="confluenceTd"><span>1.2.191_abcdefg</span></td><td class="confluenceTd"><span>rfcn_dcn_0221</span></td><td class="confluenceTd"><span>0.95</span></td><td class="confluenceTd"><span>0.95</span></td><td class="confluenceTd"><span>0.98</span></td><td class="confluenceTd"><span>0.93</span></td><td class="confluenceTd"><span>0.85</span></td><td class="confluenceTd"><span>0.85</span></td></tr></tbody></table></div><div class="table-wrap"><table class="confluenceTable"><colgroup><col/><col/><col/><col/></colgroup><tbody><tr><th class="confluenceTh">Col1</th><th class="confluenceTh">Col2</th><th class="confluenceTh">Col3</th><th class="confluenceTh"><p>Col4</p></th></tr><tr><td colspan="1" class="confluenceTd">1</td><td colspan="1" class="confluenceTd">2</td><td colspan="1" class="confluenceTd">3</td><td colspan="1" class="confluenceTd">4</td></tr></tbody></table></div>'
soup = bs4.BeautifulSoup(test)
tbl = soup.findAll('table')
table_body = tbl[-1].find('tbody') #select last table
rows = table_body.find_all('tr')
new_row = copy.deepcopy(rows[-1]) #select last row, and make a copy
#mutate that copy
cols = new_row.find_all('td')
new_data = [2, 3, 4, 5]
for col, data in zip(cols, new_data):
col.string = str(data)
table_body.append(new_row) #append at the end of last table selected earlier
with open(r"D:\python\html.html","w") as f:
f.write(soup.prettify())
,并且仅在package.json文件已更改的情况下运行COPY package.json .
RUN npm install
COPY . .
。
但是,如果我们在Dockerfile中执行git pull,则有些不同,但是我们可以这样做:
npm install
对于bitbucket,URL为:
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