-
Notifications
You must be signed in to change notification settings - Fork 5.7k
Closed
Labels
Description
Description
Affected versions
| Component | Works (v2.37.1) | Fails (v2.37.2) |
|---|---|---|
| Docker Compose | ✅ | ❌ |
Since Docker Compose v2.37.2, docker compose run seems to always rebuilds a service that has both an image: tag and a build: section, even when the tagged image is already present locally. Earlier versions (≤ v2.37.1) correctly skipped the build. This regression breaks CI pipelines that pre-build images with secret build args and expect the run phase to start the container without rebuilding.
Steps To Reproduce
Steps to reproduce
# 1 – Build and load the image locally
docker buildx build \
--load \
-f src/path/Dockerfile.api-core \
--target base \
-t X-api .
# 2 – docker-compose.yml
cat <<'YML' > docker-compose.yml
services:
core-test:
image: X-api # Matches the tag built above
build:
context: .
dockerfile: src/path/Dockerfile.api-core
target: base
YML
# 3 – Run the service
docker compose run --rm core-test echo OKExpected behavior (v2.37.1)
docker compose run detects the local image X-api and starts the container without any build.
Actual behavior (v2.37.2)
Compose always launches a new build for core-test.
Why is it an issue ?
In my CI, it fails because secret build-args (e.g. Y_SECRET) are only available during the initial build step.
Compose Version
/
Docker Environment
## Env
Docker version
/usr/bin/docker version
Client:
Version: 25.0.4
API version: 1.44
Go version: go1.21.8
Git commit: 1a576c5
Built: Wed Mar 6 16:32:02 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 28.2.2
API version: 1.50 (minimum version 1.24)
Go version: go1.24.3
Git commit: 45873be
Built: Fri May 30 11:52:20 2025
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.7.27
GitCommit: 05044ec0a9a75232cad458027ca83437aae3f4da
runc:
Version: 1.2.6
GitCommit: v1.2.6-0-ge89a[29](https://github.com/PII/PII/actions/runs/15829363608/job/44617836286?pr=26309#step:7:31)9
docker-init:
Version: 0.19.0
GitCommit: de40ad0
/usr/bin/docker info
Client:
Version: 25.0.4
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.13.1
Path: /usr/local/lib/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.37.1
Path: /home/runner/.docker/cli-plugins/docker-compose
Server:
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 1
Server Version: 28.2.2
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
CDI spec directories:
/etc/cdi
/var/run/cdi
Swarm: inactive
Runtimes: runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: docker-init
containerd version: 05044ec0a9a75232cad458027ca83437aae3f4da
runc version: v1.2.6-0-ge89a299
init version: de40ad0
Security Options:
seccomp
Profile: builtin
cgroupns
Kernel Version: 6.1.134
Operating System: Alpine Linux v3.22 (containerized)
OSType: linux
Architecture: x86_64
CPUs: 16
Total Memory: [30](https://github.com/PII/PII/actions/runs/15829363608/job/44617836286?pr=26309#step:7:32).79GiB
Name: arc-runner-set-amd64-8c-zjfb5-runner-nhv7m
ID: cb10c906-1723-4f6d-9863-8f6679a61d67
Docker Root Dir: /var/lib/docker
Debug Mode: false
Username: charlessortlist
Experimental: false
Insecure Registries:
::1/128
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine
WARNING: bridge-nf-call-iptables is disabled
Anything else?
Thanks for your time, and for maintaining this awesome product!
charmander