SCRIPT USAGE AND DIFFERENCES FROM OTHER APT TOOLS
The apt(8) commandline is designed as an end-user tool and it may change behavior between versions. While it tries not to break backward compatibility this is not guaranteed either if a change seems beneficial for interactive use.
All features of apt(8) are available in dedicated APT tools like apt-get(8) and apt-cache(8) as well. apt(8) just changes the default value of some options (see apt.conf(5) and specifically the Binary scope). So you should prefer using these commands (potentially with some additional options enabled) in your scripts as they keep backward compatibility as much as possible.
実際は下記のように
--no-install-recommends
オプションを使って必要最小限のインストールを一度に複数行うのがいいでしょう。また、
apt update
と
apt install
の行をまとめることで古いパッケージ情報のキャッシュ利用を避けることができます。最後に不要なパッケージマネージャーのキャッシュを削除して容量を削減します。 これらのコマンドをまとめることでレイヤ数を必要最小限にし、さらに容量を削減できます。
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
cowsay \
nyancat \
&& apt-get -y clean \
&& rm -rf /var/lib/apt/lists/*
一連のコマンド後に
&&
でさらにコマンドを連結することができますが、依存関係のあるライブラリのインストールや、
ln
コマンドによるシンボリックリンク作成など、雑に連結するとエラーになるものがありますので注意してください。 最初はあまり連結せずに
RUN
で書いて動作を確認し、その後行末から連結して動作確認するのがおすすめです。 但し、状況によっては後述のマルチステージビルドの方法を検討しましょう。
source コマンドが使用できない
Ubuntu の /bin/sh は bash でなく Dash が使われており、Dash には source コマンドが無いためです。
source
の代わりに
.
(ドット)を使用します。 なお、下記の例は相対パスで
.bash_profile
を指定していますが、絶対パスで指定したほうが意図しないパスでの実行を防げるため無難だと思います。
RUN source .bash_profile
RUN . .bash_profile
ビルド環境と実行環境を分ける(マルチステージビルド)
複数の
FROM
と
AS
を使ってビルド環境と実行環境のイメージを分離すること (
マルチステージビルド
) で、実行環境のみを保存することによりイメージ容量を縮小できます。イメージ内でビルドしたライブラリを使う場合に有効です。
また、ビルド環境のレイヤ数やサイズは最終的に生成される実行環境のイメージに影響しないため
&&
を極限まで使ってレイヤ数を減らす必要がなくなり、複雑さを低減できます。
FROM image_A AS build-native-env
FROM image_B
COPY --from=build-native-env /projectdir
cowsay
のインストールは表示上正常に完了したように見えても、実行できず、
which cowsay
の結果も返ってこない..牛さんの姿を拝むことは果たしてできるのか!?
以上、Buzy の「鯨」を聴きつつお送りしました。
============================
◆◇FIXERってどんな会社?◇◆
気になるあなたに、ぜひ参加していただきたい企業説明会を実施しています!
採用担当 が毎回、小さな疑問も大きな不安もじっくりお答えしています♪
聞きづらい質問もどんとこーい!な企業説明会です!
FIXER企業説明会はこちらからどうぞ!
◆◇FIXERでは今、新卒・中途問わず仲間を募集しています!◇◆
ぜひ求人も覗いてみてください!↓↓↓
FIXERの求人はこちらからどうぞ
============================
2024/08/26
Azure
2024/08/23
About FIXER
2024/08/23
About FIXER