今回は「Dockerイメージ作成時につけておきたいコメント」についてまとめます。
Dockerイメージを作成した後、いざ利用しようとすると作った本人しか使い方が良くわからない…といった事態が発生します。 こんな状態を避けるためには「使い方をコメントとして残して、ドキュメント化しておく」必要があります。 本記事では「どんな情報を残すとよいか」についてまとめてみます。
たとえば、「Dockerイメージ」を「プログラムにおける関数」と捉えるなら、以下のような情報を残しておく必要があるように思えます。
| 関数 | Dockerイメージ |
|---|---|
| 関数名 | イメージ名、タグ名 |
| 概要 | LABEL |
| 引数 | ENV |
| 戻り値 | EXPOSE |
イメージ名やタグ名は改めて取り上げるまでもないので…ここでは残りの3つについてどんなことを記載するとよいかや記載の仕方いついてまとめていきます。 (「戻り値」に相当するのが「EXPOSE」というのはやや議論の余地ありそうですが…まぁ、Dockerの出力結果はアプリ自体なのでそのアプリが受け付けるという意味では…と)
LABEL
基本的には「ラベルスキーマ 」に従うのがよさそうです。 ここでは使えそうなスキーマをいくつかピックアップして記載します。 なお、以下の表のラベルには接頭辞で「org.label-schema.」が必要になります。
| ラベル | 説明 |
|---|---|
| name | イメージ名やマイクロサービス名など、わかりやすい名称。 |
| description | イメージに関する説明(300文字以内)。 |
| usage | 使い方を記載したファイルへのパス(イメージ内のパス、外部URLなど)。 |
| url | イメージに関する詳細情報を記述したURL。 |
| vendor | イメージを作成した組織名。 |
| vcs-url | イメージが利用しているソースコードを保管しているバージョン管理システム(GitHubなど)のURL。 |
| vcs-ref | イメージが利用しているソースコードのバージョン管理システム上のID(GitHubだとSHA)。 |
サンプル
## メタ情報定義 LABEL org.label-schema.name="myname" LABEL org.label-schema.description="This service does awesome things with other things" LABEL org.label-schema.usage="/usr/doc/app-usage.txt" LABEL org.label-schema.url="http://postgresql.org" LABEL org.label-schema.vendor="Stark Industries" LABEL org.label-schema.vcs-url="https://github.com/nginx/nginx" LABEL org.label-schema.vcs-ref="279FA63"
ENV
Dockerイメージに何かしら情報を渡したいときは環境変数を利用します。
特に指定しなくてもDockerイメージはコンテナ化できるし利用もできますが、「コメントを残す」という意味で記載はした方がよさそうです。
サンプル
## 環境変数定義
# USERNAME : 接続ユーザー名
# PASSWORD : 接続パスワード
# HOSTS : 接続先ホスト
ENV USERNAME=root \
PASSWORD=qwerty \
HOSTS=127.0.0.1
Dockerイメージのレイヤーが作成されるのはRUN, COPY, ADDだけなので、ENVやEXPOSEはバラバラに記述してもサイズには影響ないみたいです。
EXPOSE
Dockerコンテナになったとき受け付けるポート番号の一覧を定義しておきます。
サンプル
## 受付ポート番号
# 3000 : アプリ本体
# 8080 : 管理Web
EXPOSE 3000/tcp \
8080/tcp
こちらも ENV と同様、Dockerイメージのレイヤーが作成されるのはRUN, COPY, ADDだけなので、ラバラに記述してもサイズには影響ありません。
今回は「Dockerイメージ作成時につけておきたいコメント」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!