`docker-compose.yml`におけるimageの設定に関して整理した経験より(2021-03-16)

docker-compose.ymlにおけるimageの設定に関して整理した経験より(2021-03-16)

畑田です。
docker-compose.ymlでimageに関する設定を記述する方法を整理したので記録しておきます。

docker-compose.ymlについて

docker composeコマンドやdocker-composeコマンドでは、imageやcontainerなどの論理オブジェクトを管理する設定を書いたファイルを参照する必要があります。
これがdocker-compose.ymlです。
厳密にいうと、ファイルを指定せずにdocker composeあるいはdocker-composeを実行すると、コマンドを打っているdirectory内のdocker-compose.ymlあるいはdocker-compose.yamlをデフォルトで参照します。
--fileオプションを用いるとどんな名前のファイルでも参照できます。

imageの設定について

docker-compose.ymlファイル内には、各サービスについて、どの様なimageをビルドするのかを記述する必要があります。
imageに関する変数の指定には、build:オプションとimage:オプションを用います。
いずれもservice名の直下に書きます。

build: option

まず、build:はimageをビルドするリソースを指定するキーです。
具体的なvalueは、remoteにあるimageへのURLやlocalのDockerfileへのpath(相対パス、絶対パスとも指定可能)です。
build:の下にはcontext:dockerfile:などのオプションを記述することができます。(その他にもargs:network:などがあります。)
context:オプションには、Dockerfileにとってのcurrent directoryを指定し、dockerfile:オプションにはDockerfileへのpathを指定することができます。
この2つのオプションを使うと、Dockerfileが位置するdirectoryとDockerfileにとってのcurrent directoryが違うという状況を実現できます。

image: option

image:オプションは単独で用いられる場合と、build:オプションとともに用いる場合があります。
単独で用いられる場合、valueにはremote (docker hub)あるいはlocalに存在する、imageのNAME[:TAG]やIDを指定します。
この際、dockerは先にlocalにあるimageを探索し、なければremote (docker hub)を探索するので、同名で異なる内容のimageがlocalとremoteに存在するとき、localが優先されます。
bulid:オプションとともに用いられる場合、valueにはbuild:で指定してビルドされたimageにつける名前とタグを指定できます。
build:オプションのみを記述すると、image名はdefautでroot-directory-name_service-nameになります。

おすすめ

人気の投稿

コメントを残す

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