Dockerfile メモ1

この記事は1年以上前に書かれたものです。 情報が古い可能性があります。

テキトーな Dockerfile 眺めて気になったところメモ。

RUN の最初にある set -x

RUN set -x \
&& apt-get update \
.....

なんやったっけ?と思った。

RUN の文脈だとパッとわからなかったが、単に set コマンドの -x だった。デバッグ用に実行コマンドを表示するコマンドですね。set +x で表示しないようになります。

e オプションがついてる場合もあります。

エラーがあったらスクリプトをそこで止めてくれるオプションです。

Linux のちしきがたりない!!!!

rm -rf /var/lib/apt/lists/*

まぁよく出てくる rm コマンド。そもそも /var/lib/apt/lists/* って何かというと、apt update したときに apt が /etc/apt/sources.list にある URL からとってきたパッケージのインデックスを保存しているところ。

apt-get purge -y --auto-remove \
rm -rf /var/lib/apt/lists/*

だいたいこんな感じで RUN の最後のほうに書いてある。

手元のやつだと 133M もあったし、消しても apt update 実行すればいいだけなので、ポイしてるみたい。

savedAptMark=“$(apt-mark showmanual)”

依存関係の処理らしきもの。apt-mark showmanual で手動でインストールしたパッケージの一覧を取得します。build の依存関係を消し去るためかなぁと思ってます。中がどうなってるのかよくわかりません。

apt purge -y –auto-remove には
-o APT::AutoRemove::RecommendsImportant=false;
とかがついてることもあるみたいです。

savedAptMark="$(apt-mark showmanual)" \
	&& apt-get update \
	&& apt-get install ......
....
	&& apt-mark showmanual | xargs apt-mark auto > /dev/null \
	&& { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; } \
....
&& apt-get purge -y --auto-remove ○○○○
&& rm -rf /var/lib/apt/lists/*;

眠いから今日はこれくらい。docker-compose 調べるはずが脇道それたw

コメント

タイトルとURLをコピーしました