Docker のマルチステージビルド (Multi Stage Build) で Symbolic Link を使う
1755 ワード
Dockerはサイズを小さくするために、builderと実際使うイメージでステージを分けて書くマルチステージビルド(multi-stage builds)がよく使われています。このマルチステージビルドを使う時、builderでライブラリをインストールし、実際使うイメージにライブラリをADDやCOPYで追加して使いたい場合があります。
ライブラリにはSymbolic Linkがよく含まれるのですが、DockerのADDやCOPYコマンドはSymbolic Linkを追加することは出来ません。
この問題は、builderで必要なSymbolic Linkをtarで固め、次のステージでtarファイルを展開することで意外と簡単に解決できます。
実際のDockerfileの例で詳しく見てみましょう。
Dockerfileの例と解説
FROM debian:latest as builder
RUN tar czf testlib.tar.gz /usr/local/lib/test.so.* \
/usr/local/lib/test1.so.* \
/usr/local/lib/test2.so.* # 必要なSymbolic Linkをtarにする
FROM debian:latest
COPY --from=builder /testlib.tar.gz /testlib.tar.gz # 固めたtarファイルをコピー
RUN cd / && tar xzf testlib.tar.gz # 固めたSymbolic Linkを展開
この方法を知るまでADDやCOPYでSymbolic Linkを追加しようと苦労したことが夢のようです。
参考
Author And Source
この問題について(Docker のマルチステージビルド (Multi Stage Build) で Symbolic Link を使う), 我々は、より多くの情報をここで見つけました https://qiita.com/qualitia_cdev/items/721d7e27d9ec1e3a4318著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .