如果我composer install
从我的主机运行,我会点击我的本地作曲家缓存:
- 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%
这是意料之中的,但我喜欢避免它。即使在重建时,它也会再次下载所有内容。
我想为作曲家提供一个通用缓存,我也可以将其转发给其他 docker 项目。
我对此进行了调查,并找到了在 Dockerfile 中定义卷的方法:
ENV COMPOSER_HOME=/var/composer
VOLUME /var/composer
我将它添加到我的Dockerfile
,并希望只下载一次文件,然后点击缓存。
然而,当我修改我的composer
,例如删除-o
标志并重新运行docker build .
时,我希望在构建时命中缓存,但我仍然再次下载供应商。
卷应该如何工作以在 docker 容器内拥有数据缓存?