ホストから実行するcomposer install
と、ローカルの composer キャッシュにヒットします。
- 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 プロジェクトでも再共有できる、composer 用のユニバーサル キャッシュが必要です。
これを調べたところ、Dockerfile でボリュームを定義する方法が見つかりました。
ENV COMPOSER_HOME=/var/composer
VOLUME /var/composer
私はそれを自分のファイルに追加しDockerfile
、ファイルを一度だけダウンロードし、その後キャッシュにヒットすることを期待していました.
それでも、たとえばフラグをcomposer
削除してを再実行すると、ビルド時にキャッシュにヒットすることが予想されましたが、それでもベンダーを再度ダウンロードします。-o
docker build .
docker コンテナ内にデータキャッシュを持つために、ボリュームはどのように機能するはずですか?