自由気ままに書いちゃおう

好きなことをつらつらと・・・

【docker】任意のDockerfileを指定してビルドする

前回の記事でDockerfileを利用したビルド方法を書きました。

www.guri2o1667.work


この時は、Dockerfileという名前を決め打ちで使っておりました。
今回は、任意のDockerfile名を利用したビルド方法について記載致します。

■はじめに(前回のおさらい)

Dockerfileを利用したビルド書式は以下の通りです。

f:id:guri2o1667:20201126151338p:plain

基本的なビルドするまでの流れは以下の通りでした。
 作業用ディレクトリに移動
  ↓
 Dockerfile作成(ファイル名もDockerfile)
  ↓
 docker image buildコマンドを実行

■やりたいこと

下記二つを実現したいとします。
① DockerfileというDockerfile名ではなく、任意の名前のものを指定する方法
② 任意の場所にあるDockerfileを指定する方法

①、②の両方を満たすやりかたを下記しております。

■やってみる

今回は以下の内容にてビルドします。
Dockerfile名:    testdockerfile
Dockerfileの格納先: Desktop直下のwork2フォルダ
タグ名:       centos:centos8-build-which3
docker buildコマンド実行時のディレクトリ: C:\Users\test\Desktop

f:id:guri2o1667:20201126152534p:plain

f:id:guri2o1667:20201126152547p:plain


以下はビルド時のコマンドです。
※少し長いです。

docker image build -t centos:centos8-build-which3 -f C:\Users\test\Desktop\work2\testdockerfile C:\Users\test\Desktop\work2\

f:id:guri2o1667:20201126155638p:plain

 

■今回のポイント

ポイントは以下の通りです。
① -fオプションを利用する。

② -fオプションの引数には"Dockerfileフルパス/任意のDockerfile名"を記載する。
こちらについて少し補足しますと、書式は以下になります。
-f "Dockerfileのフルパス+Dockerfile名" "コンテキストの場所"

-fオプションを利用しないときは(=ドットのみを指定した際は)、
「カレントディレクトリ内のDockerfileを利用する」+「カレントディレクトリをコンテキストの場所とする」ということを表現していることになります。

-f オプションを付ける際には、ドットが補っていた「Dockerfileの場所」と「コンテキストの場所」を明示的に指定する必要があるため、前述のようなコマンド形式になります。
尚、以下のコマンドでもコンテキストの場所が異なるだけのため、イメージ作成は可能です。

docker image build -t centos:which -f C:\Users\test\Desktop\work2\testdockerfile .

f:id:guri2o1667:20201126162837p:plain

 

■まとめ

ビルドする際には、「Dockerfileの場所」と「コンテキストの場所」を指定する必要があります。


以上です。