3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

dockerfile_inlineでcompose.yamlにDockerfileをインラインで書く

Posted at

概要

先日出たDocker Compose v2.17.3から dockerfile_inline という構文で compose.yaml にDockerfileをインラインで書けるようになりました。これのなにがうれしいかというと、メインのアプリケーションではなく周辺のミドルウェアなどでDockerfile書くほどでもないんだけど、ちょっとだけカスタマイズしたいみたいなのが書きやすくなる。

※厳密に言うと dockerfile_inline という構文自体はcompose v2.17.0から追加されましたが、初期実装はバグがあり機能してなかったので、実質まともに使えるようになったのはv2.17.3からです。

環境

本稿執筆時点の最新版のDocker Desktop for Mac v4.19.0にバンドルされてるcomposeがv2.17.3だったので、とりあえず最新に上げて試します。

$ docker compose version
Docker Compose version v2.17.3

$ docker version
Client:
 Cloud integration: v1.0.31
 Version:           23.0.5
 API version:       1.42
 Go version:        go1.19.8
 Git commit:        bc4487a
 Built:             Wed Apr 26 16:12:52 2023
 OS/Arch:           darwin/arm64
 Context:           default

Server: Docker Desktop 4.19.0 (106363)
 Engine:
  Version:          23.0.5
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.8
  Git commit:       94d3ad6
  Built:            Wed Apr 26 16:17:14 2023
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.20
  GitCommit:        2806fc1057397dbaeefbea0e4e17bddfbd388f38
 runc:
  Version:          1.1.5
  GitCommit:        v1.1.5-0-gf19387a
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

本題と関係ないですが、Docker Desktop v4.19.0 からDocker Engineがついにv20.10系からv23.0系になりました。やったね。
https://docs.docker.com/desktop/release-notes/#4190

やってみた

公式ドキュメントはこちら
https://docs.docker.com/compose/compose-file/build/#dockerfile_inline

試しに適当なalpineのベースイメージにcurlを追加してみる。

compose.yaml
services:
  curl:
    build:
      context: .
      dockerfile_inline: |
        FROM alpine
        RUN apk --no-cache add curl
        ENTRYPOINT ["curl"]

ビルド

$ docker compose build

実行

$ docker compose run --rm curl -sI https://google.com | head -1
HTTP/2 301

よさそう。

別にDockerfile書くのと機能的には変わらないんですが、 compose.yaml 1枚に書けると、シュッとコピペしやすくなるのもうれしい気がする。

余談

compose v2から docker-compose コマンドは docker compose になっており、ファイル名は compose.yaml が公式に推奨されています。

後方互換性のため docker-compose.yaml or docker-compose.yml も読み込まれますが、ファイル内にフォーマット version 指定も不要です。おやっと思った人は、知識がcompose v1で止まってそうですが、compose v1は2023年6月にEOLの予定なので、知識もv2にアップデートしておきましょう。

おしまい。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?