このページで解説している内容は、以下の 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で指定されたコマンドが実行されます。

関連コンテンツ