Docker Compose has support for build time secrets since a while now. I tried using Docker Compose build secrets using the samples provided in the Docker Compose pull request but the secrets are not injected in the Dockerfile when I use docker compose build. I'm using Docker Desktop on Windows 10 (I just did a fresh install). When trying the same command using the same files in an Ubuntu VM, the secrets are injected in the Dockerfile.
What could be wrong?
docker-compose.yml
services:
ssh:
image: build-test-secret
build:
context: .
secrets:
- mysecret
secrets:
mysecret:
file: ./secret.txt
Dockerfile
FROM alpine
RUN echo "foo" > /tmp/expected
RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret > /tmp/actual
RUN diff /tmp/expected /tmp/actual
secret.txt
foo
The output of docker version
on the Windows 10 machine is:
Client:
Cloud integration: v1.0.35+desktop.5
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:32:48 2023
OS/Arch: windows/amd64
Context: default
Server: Docker Desktop 4.25.0 (126437)
Engine:
Version: 24.0.6
API version: 1.43 (minimum version 1.12)
Go version: go1.20.7
Git commit: 1a79695
Built: Mon Sep 4 12:32:16 2023
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: 1.6.22
GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe
docker-init:
Version: 0.19.0
GitCommit: de40ad0
And the output of docker compose version
on the Windows 10 machine is:
Docker Compose version v2.23.0-desktop.1