水底

ScalaとかC#とかネットワークとか

Docker Composeでビルド時に任意のイメージ名を指定する方法

公式リファレンスを見ても分かりづらいのでメモ.

Docker Compose経由でビルドされたデフォルトイメージ名は {プロジェクト名}_{サービス名} となる (デフォルトプロジェクト名はディレクトリ名だが, コマンドラインオプション -p から指定可能). 例えば以下のような構成であれば, イメージ名が hoge_fuga, コンテナ名が piyo となる.

hoge
 ┣ Dockerfile
 ┣ docker-compose.yml
 ┗ ...
# docker-compose.yml
version: '2'
services:
  fuga:
    build: .
    container_name: piyo

しばしば長ったらしいイメージ名になってしまう. そこで以下のように image を追加することでイメージ名を指定できる. imagebuild が同時に宣言されている場合は, ビルドが優先的に実行されて, image はその構成に使われる (image によるプルは発生しない). 結果としてイメージ名が nyan, コンテナ名が piyo となる. ちなみにタグの付与も image からできる. これらは全て, Compose File v2からの機能である.

# docker-compose.yml
version: '2'
services:
  fuga:
    build: .
    image: nyan
    container_name: piyo