Docker
Dockerfileコンテンツの順序付け
サーチ…
備考
- ベースイメージ宣言(
FROM
) - メタデータ(
MAINTAINER
、LABEL
) - システム依存関係のインストール(例:
apt-get install
、apk add
) - アプリケーション依存ファイルのコピー(例:
bower.json
、package.json
、build.gradle
、requirements.txt
) - アプリケーションの依存関係のインストール(例:
npm install
、pip install
) - コードベース全体をコピーする
- デフォルトの実行時設定を設定する(
CMD
、ENTRYPOINT
、ENV
、EXPOSE
)
これらの順序は、Dockerに組み込まれたキャッシュメカニズムを使用して構築時間を最適化するために行われます。
親指のルール:
頻繁に変化する部分(コードベースなど)は、Dockerfileの一番下に配置する必要があります。ほとんど変化しない部品(例えば、依存関係)は、一番上に置く必要があります。
シンプルドッカーファイル
# Base image FROM python:2.7-alpine # Metadata MAINTAINER John Doe <[email protected]> # System-level dependencies RUN apk add --update \ ca-certificates \ && update-ca-certificates \ && rm -rf /var/cache/apk/* # App dependencies COPY requirements.txt /requirements.txt RUN pip install -r /requirements.txt # App codebase WORKDIR /app COPY . ./ # Configs ENV DEBUG true EXPOSE 5000 CMD ["python", "app.py"]
MAINTAINERはDocker 1.13で推奨されなくなり、LABELを使用して置き換える必要があります。 ( ソース )
例:LABEL Maintainer = "John Doe [email protected]"
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow