🙄
[Docker Compose] build時の--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
- docker composeのバージョン => v2.5.0であることを確認
$ docker compose version
2.5.1
- secretフラグを使用した、Dockerfileを作成
Dockerfile
FROM alpine
RUN cat /run/secrets/sample_secret
- 引き渡すsecretファイルを作成
sample_secret.txt
I'm secret!!
- 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"
- 通常通り
$ 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から、ファイル形式ではなく、環境変数として引き渡すことも可能になっています
詳細/リファレンス
Discussion