🙄

[Docker Compose] build時の--secretフラグが対応されていました!

2022/08/14に公開

--secretフラグとは?

概要

Docker Compose v2.5.0から、RUN --mount=type=secretを利用したbuildをする際の、--secretフラグがサポートされるようになっていました

以前まで

build時にsecretを利用するimageがある場合、--secretフラグ付きで先にdocker buildしてから、docker-compose upする必要がありました

$ DOCKER_BUILDKIT=1 docker build --secret id=hoge,src=.hoge .
$ docker-compose up

HOW

  1. docker composeのバージョン => v2.5.0であることを確認
$ docker compose version
2.5.1
  1. secretフラグを使用した、Dockerfileを作成
Dockerfile
FROM alpine

RUN --mount=type=secret,id=sample_secret cat /run/secrets/sample_secret
  1. 引き渡すsecretファイルを作成
sample_secret.txt
I'm secret!!
  1. docker-compose.yamlを作成
docker-compose.yaml
services:
  api-server:
    build:
      context: .
      secrets:  ## 追加
        - sample_secret  ## 追加

secrets:  ## 追加
  sample_secret:  ## 追加
    file: sample_secret.txt  ## 追加
    # ちなみに、docker composeが、>v2.6.1であれば、環境変数として引き渡すことも可能です
    # environment: "I'm secret"
  1. 通常通り$ docker compose upするとsecretが引き渡され、コマンドが通ります!

(一応、--progress=plainしたら、I'm secretの出力も確認できます)

$ docker-compose build --progress=plain --no-cache
### 省略
#5 [2/2] RUN --mount=type=secret,id=sample_secret cat /run/secrets/sample_secret
#5 0.157 I'm secret!!
### 省略

補足

v2.6.1から、ファイル形式ではなく、環境変数として引き渡すことも可能になっています

詳細/リファレンス
https://github.com/compose-spec/compose-spec/blob/master/spec.md#secrets-top-level-element

Discussion