Dockerfileのベストプラクティスについて以下のページに記載されているので、自分用にピックアップ。
http://docs.docker.jp/engine/articles/dockerfile_best-practice.html
| ガイドライン・推奨 | 備考 |
|---|---|
| コンテナはエフェメラルであるべき | |
| .dockerignore ファイルを使う | ディレクトリには Dockerfile が構築に必要なファイルだけ追加 |
| 不要なパッケージのインストールを避ける | |
| コンテナ毎に1つのプロセスだけ実行 | |
| レイヤの数を最小に | |
| 複数行の引数 | 複数行の引数をアルファベット順にする。これにより、パッケージが重複しないようにしたり、リストの更新を簡単にする。 |
Dockerfile命令
| 命令 | 備考 |
|---|---|
| FROM | 自分のイメージの元として現在の公式レポジトリを使う。Debian イメージ 推奨 |
| RUN | 複雑な RUN 命令はバックスラッシュを使い複数行に分割。RUN apt-get update と apt-get install は常に同じ RUN 命令文で連結。RUN apt-get update && apt-get install -y を使う。 |
| CMD | CMD は常に CMD [“executable”, “param1”, “param2”…] のような形式で使うべきである |
| EXPOSE | アプリケーションが一般的に使う、あるいは、伝統的なポートを使うべきである |
| ADDとCOPY | COPY が望ましい。 |
| WORKDIR | 常に WORKDIR からの絶対パスを使うべきである |