如果我從我的主機上運行composer install
,我打我的本地作曲家緩存:如何緩存docker build的軟件包管理器下載?
- Installing deft/iso3166-utility (1.0.0)
Loading from cache
然而,建立在其Dockerfile容器中時:
RUN composer install -n -o --no-dev
我下載所有的東西,如:
- Installing deft/iso3166-utility (1.0.0)
Downloading: 100%
這是預期的,但我喜歡避免它。即使在重建時,它也會再次下載所有內容。
我想有一個作曲家的通用緩存,我也可以轉發其他碼頭項目。
我看着這一點,並找到了辦法define a volume in the Dockerfile:
ENV COMPOSER_HOME=/var/composer
VOLUME /var/composer
我還說,我Dockerfile
,並預計將只有一次下載的文件,事後命中緩存。
然而,當我修改我的composer
時,例如,刪除-o
標誌,並重新運行docker build .
,我預計會在構建緩存中生效,但我仍然會再次下載供應商。
卷應該如何在Docker容器中有數據緩存?
體積將持續一個容器實例,但不是在構建。您可以創建一個指定的卷,它將保留在一個靜態位置,但您將一個解決方案耦合到一個環境。你需要考慮在構建vs之後你想要做什麼。您可以設置某種本地存儲庫來充當緩存/代理。 – ldg
我也很苦惱。你有沒有想出一個辦法呢?我想也許使用HTTP代理並指導Docker使用它可以工作。可能排除hub.docker。com從代理到不保留下載圖像的兩個副本。 – gooli
@gooli發表了一個關於我如何處理這個問題的答案。 Thx提醒。 – k0pernikus