参考リポジトリ
目的
- Dockerfile の中で、 ARGを使いたい。
- LABEL としてビルドした日付や、 VCSのリビジョンを入れたい
- ソフトウェアのバージョンをARGで指定したい
やること
- Dockerfile と同じ場所に、
hook
ディレクトリを作成する。 hook
ディレクトリ以下に、build
というファイルを作成する。build
には、 build時に実行したいシェルスクリプトを書くと、build 時に実行される。- 自分で docker build … というコマンドを書く
TIPS
Dockerfileを別の場所に置く場合
https://github.com/hitsumabushi/docker-phpipam では、 Dockerfile を、/dockerimages/phpipam/
以下に置いている。
その場合であっても、 Dockerfileと同じディレクトリに、 hook
ディレクトリを作成すれば良い。
その上で、 DockerHub の Build Settings の Dockerfile Location にて、 /dockerimages/phpipam/Dockerfile
とすれば良い。
注意点としては、実際にビルドされるとき、 /dockerimages/phpipam/
以下でビルドされることになるのだけど、
上位(例えば、リポジトリルート) のファイルなどはビルド中アクセスできない。
もし必要なファイルがあるのであれば、Dockerfileと同じか、そのサブディレクトリに置く必要がある。
build 中の環境変数の参考
printenvなどすればわかる。 色々便利な環境変数がセットされていて、例えば、以下のようなものが便利そう。
GIT_SHA1
: revision の sha-1 ハッシュGIT_MSG
: commit メッセージSOURCE_BRANCH
: git branchDOCKER_REPO
: DockerHubで公開されるときのURLDOCKER_TAG
: ビルドに成功したときに利用されるタグ (Build Settingsで設定できる。)IMAGE_NAME
: イメージ名 (index.docker.io/hitsumabushi/phpipam:latest
のようになる。)
Dockerfile のラベルについて
Dockerfile には LABEL
を追加することでメタ情報をつけておくことができる。
フォーマットに関して指定はないが、以下のようなラベルをつけるのも良さそう。
その他のhook
もし、build の前に何かやりたいなどあれば、 pre_build
などのhookもある。
その他の hook については、 thibaultdelor/testAutobuildHooks が参考になる。
comments powered by Disqus