このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】ONBUILDを使ってみる③
「ONBUILDを使ってみる②」の続きです、「ONBUILDを使ってみる」は、3部に分けて解説しています。
「ONBUILDを使ってみる③」では、下図のオレンジ枠の2回目のビルド操作を行っていきます。
「webcontent.tar」ファイルの作成
「webcontent.tar」ファイルを作成します。
tarファイルとは複数のファイルをまとめたアーカイブです。ADDコマンドでコピーされる際に自動的に展開されます。
tarでアーカイブを作成するには、以下のように記述します。
【構文】tar cvf アーカイブ名 ファイル1 ファイル2…
・「tar cvf webcontent.tar index.html whale.png」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\Webserver2> tar cvf webcontent.tar index.html whale.png
a index.html
a whale.png
・「ls」コマンドで確認します。
PS C:\Users\joeac\Desktop\docker\Webserver2> ls
Directory: C:\Users\joeac\Desktop\docker\Webserver2
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2024/03/20 17:29 71 Dockerfile
-a--- 2024/03/20 16:55 381 Dockerfile.base
-a--- 2024/03/20 17:40 95 index.html
-a--- 2024/03/21 0:16 7680 webcontent.tar
-a--- 2024/03/20 3:05 4988 whale.png
「webcontent.tar」ファイルが作成されていることが確認できます。
コンテナの停止
「base-container」を停止します。
・「docker container stop base-container」コマンドを実行しておきます。
PS C:\Users\joeac\Desktop\docker\Webserver2> docker container stop base-container
base-container
2回目のビルド
ここで、「Dockerfile.base」と「Dockerfile」を確認しておきます。
「Dockerfile」では、ベースイメージに「base-image」を指定しています。
2回目のビルド時に「ONBUILD ADD webcontent.tar /var/www/html」が実行されます。
「base-image」は、既に作成済みなので、「whale-image」を作成します。
・「docker build -t whale-image .
」コマンドを実行します。
コマンドの最後に「.」が付いていますので注意してください。「.」は、 カレントディレクトリを表します。
PS C:\Users\joeac\Desktop\docker\Webserver2> docker build -t whale-image .
[+] Building 0.1s (7/7) FINISHED docker:default
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 108B 0.0s
=> [internal] load metadata for docker.io/library/base-image:latest 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 7.72kB 0.0s
=> [1/1] FROM docker.io/library/base-image 0.0s
=> [2/1] ADD webcontent.tar /var/www/html 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:7f31030879b763eaf19d170efe1c28f2c06187ffeb94 0.0s
=> => naming to docker.io/library/whale-image 0.0s
What's Next?
View a summary of image vulnerabilities and recommendations → docker scout quickview
コンテナの作成と実行
「whale-image」から「whale-container」を作成します。
・「docker run --name whale-container -it -d -p 80:80 whale-image
」コマンドを実行します。
「docker run」コマンドは、コンテナの作成から実行までを行うコマンドです。「base-container」が作成され、実行されます。
PS C:\Users\joeac\Desktop\docker\Webserver2> docker run --name whale-container -it -d -p 80:80 whale-image
8af8feaa6d421991eb1cade7749503ba36a9c26b37211d825f21d1811f5fc569
Webブラウザで確認
・Webブラウザを起動して、URLに「localhost」と入力します。
Webページが表示されます。
ONBUILDで準備したWebコンテンツが表示されます。
まとめ:ONBUILD命令
ONBUILD命令は、Dockerfile内で使用される特殊な命令の一つです。ビルド完了後に次のビルドで実行されるコマンドをイメージ内に設定します。ONBUILD命令を含むイメージをベースに他のイメージをビルドした場合、その時点でONBUILDで指定されたコマンドが実行されます。