鍍金池/ 問答/Linux  網(wǎng)絡(luò)安全/ Dockerfile 多階段構(gòu)建中,如何指定一個真實的掛載路徑?

Dockerfile 多階段構(gòu)建中,如何指定一個真實的掛載路徑?

docker 難道只能在運(yùn)行時掛載一個目錄?因為我使用多階段構(gòu)建(參考
http://ju.outofmemory.cn/entr...), 每次構(gòu)建的第一個階段都需要重新下載一遍依賴。

我覺得可以把母機(jī)上的一個路徑掛載到第一個階段里保存依賴的第三方庫,下次構(gòu)建或者別的項目構(gòu)建就會快很多了。

能不能辦到?

回答
編輯回答
哚蕾咪

大概說一下,拿我稍微熟悉的Node.js來舉例,你可能是不想在容器里創(chuàng)建node_modules這個依賴包文件夾,而是把宿主機(jī)的某個目錄給掛載過去是吧?但是在構(gòu)建的過程中,你需要下載依賴不止一次?或者是有多個依賴包文件夾?
我沒實驗過,不過我猜想哪怕你有多個安裝包文件夾,容器運(yùn)行時可以一個個分別掛載,那么這么做應(yīng)該是可以的:

docker run -d -v /dir1:/dir1 -v /dir2:/dir2 image:version

不過理論上來說這么做不太好,畢竟鏡像的依賴包跟運(yùn)行環(huán)境牽扯太大,我是這么弄Dockerfile的:

COPY ./package.json /app
CMD npm install
COPY ./ /app
RUN npm start

我先把依賴配置文件拷貝進(jìn)鏡像里,然后安裝依賴包,再拷貝項目。
這樣之后只要依賴包配置文件不變化,那么在安裝依賴包這一步的鏡像層可以反復(fù)利用,構(gòu)建速度會有很大提升。

希望能幫助到你。

2017年10月23日 00:49