docker build . -t hogeの “.” について

docker buildを実行する際に引数に与える . を所謂おまじないとしか思っていなかったせいで少しハマったので、メモ。

コンテクスト

いつも docker build . -t hoge:v1 などと実行して無事にbuildできていたので気にしていなかったが、引数の”.”はなんなのか。

docker build のヘルプを表示してみる。

$ docker build --help                                                                                                                                                           

Usage:  docker build [OPTIONS] PATH | URL | -

Build an image from a Dockerfile

Options:
(省略)

Optionを無視すれば引数は1つで、その値は PATH/URL/- のいずれからしい。
docker buildのリファレンスによると、この引数で与える値はコンテクストと呼ばれるらしい。

docker build コマンドは、 Dockerfile と「 コンテクストcontext 」から Docker イメージを構築するコマンドです。構築のコンテクストとは、指定した パス や URL に置かれているファイル全てです。構築の過程で、そのコンテクストにある全てのファイルを参照できます。たとえば、 COPY 命令を使う時に、コンテクスト内にあるファイルを参照して構築できます。URL パラメータでは、3種類のリソースを参照できます: Git リポジトリ、パッケージ済みの tar ボールコンテキスト、テキストファイル。

コンテクストとDockerfileが揃って初めてimageが構築できるよう。

ところで自分がハマった部分は、先ほどdocker build --help を実行した際の -f が関連していたので少し補足します。

Dockerfileがリポジトリ直下にない場合

docker build . -f ./docker/rails/Dockerfile -t hoge:v1

buildの引数のコンテクストを指定した上で、-f によりDockerfileの位置を指定する必要があります。

ちなみにdocker buildのヘルプ確認時に出てきた -f の説明は以下です。

-f, --file string             Name of the Dockerfile (Default is 'PATH/Dockerfile')

-fオプションをつけない場合、Dockerfileが PATH/Dockerfile’ に存在する前提で実行されます
(fはfileの頭文字のようですね。)

このため、Dockerfileが./Dockerfileに配置されていてる場合は、PATHとして.を指定してdocker buildを実行すると無事にbuildできます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


This site uses Akismet to reduce spam. Learn how your comment data is processed.