1. ホーム
  2. docker

[解決済み] apk add --virtualコマンドの.build-depsとは何ですか?

2022-04-20 05:27:35

質問

とは何ですか? .build-deps を以下のコマンドの中に入れてください。 アルパインのドキュメントに説明がありません。 これはあらかじめ定義されているファイルなのでしょうか? 多くのDockerfilesで参照されているのを見かけます。

RUN apk add --no-cache --virtual .build-deps \
gcc \
freetype-dev \
musl-dev

RUN pip install --no-cache-dir <packages_that_require_gcc...> \

RUN apk del .build-deps

解決方法は?

ドキュメントをご覧いただくと

-t, --virtual NAME    Instead of adding all the packages to 'world', create a new 
                      virtual package with the listed dependencies and add that 
                      to 'world'; the actions of the command are easily reverted 
                      by deleting the virtual package

つまり、パッケージをインストールしても、そのパッケージはグローバルパッケージには追加されないということです。そして、この変更は簡単に元に戻すことができます。つまり、あるプログラムをコンパイルするためにgccが必要だったとしても、そのプログラムがコンパイルされれば、もうgccは必要なくなるのです。

gccやその他の必要なパッケージは仮想パッケージにインストールし、その依存関係やすべてをこの仮想パッケージ名から削除することができるんだ。以下は使用例です。

RUN apk add --virtual mypacks gcc vim \
 && apk del mypacks

次のコマンドは、最初のコマンドでインストールされた18個のパッケージをすべて削除します。

dockerでは、これらは1つのコマンドとして実行する必要があります。 RUN コマンドを使用します(上図)。そうしないと、画像サイズを縮小できません。