Skip to content

Commit 55092df

Browse files
authored
fix(compose): update to docker compose v2.40.2 and use api.Compose interface (#3456)
Updated Docker Compose dependencies to resolve API compatibility issues. Changed composeService field type from api.Service to api.Compose to align with the new Docker Compose API structure in v2.40.2. - Upgrade compose-spec/compose-go/v2 from v2.6.0 to v2.9.0 - Upgrade docker/compose/v2 from v2.35.0 to v2.40.2 - Upgrade docker/cli from v28.0.4 to v28.5.1 - Upgrade docker/docker from v28.3.3 to v28.5.1 - Update Go version to 1.24.9 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 69a4891 commit 55092df

File tree

3 files changed

+203
-264
lines changed

3 files changed

+203
-264
lines changed

modules/compose/compose_api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ type DockerCompose struct {
212212
networks map[string]*testcontainers.DockerNetwork
213213

214214
// docker/compose API service instance used to control the compose stack
215-
composeService api.Service
215+
composeService api.Compose
216216

217217
// Docker API client used to interact with single container instances and the Docker API e.g. to list containers
218218
dockerClient client.APIClient

modules/compose/go.mod

Lines changed: 60 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
module github.com/testcontainers/testcontainers-go/modules/compose
22

3-
go 1.24.0
4-
5-
toolchain go1.24.7
3+
go 1.24.9
64

75
replace github.com/testcontainers/testcontainers-go => ../..
86

97
require (
10-
github.com/compose-spec/compose-go/v2 v2.6.0
11-
github.com/docker/cli v28.0.4+incompatible
12-
github.com/docker/compose/v2 v2.35.0
13-
github.com/docker/docker v28.3.3+incompatible
8+
github.com/compose-spec/compose-go/v2 v2.9.0
9+
github.com/docker/cli v28.5.1+incompatible
10+
github.com/docker/compose/v2 v2.40.2
11+
github.com/docker/docker v28.5.1+incompatible
1412
github.com/google/uuid v1.6.0
1513
github.com/stretchr/testify v1.11.1
1614
github.com/testcontainers/testcontainers-go v0.39.0
@@ -20,11 +18,9 @@ require (
2018

2119
require (
2220
dario.cat/mergo v1.0.2 // indirect
23-
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect
24-
github.com/AlecAivazis/survey/v2 v2.3.7 // indirect
2521
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
2622
github.com/DefangLabs/secret-detector v0.0.0-20250403165618-22662109213e // indirect
27-
github.com/Masterminds/semver/v3 v3.2.1 // indirect
23+
github.com/Masterminds/semver/v3 v3.4.0 // indirect
2824
github.com/Microsoft/go-winio v0.6.2 // indirect
2925
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect
3026
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
@@ -45,9 +41,9 @@ require (
4541
github.com/buger/goterm v1.0.4 // indirect
4642
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
4743
github.com/cespare/xxhash/v2 v2.3.0 // indirect
48-
github.com/containerd/console v1.0.4 // indirect
49-
github.com/containerd/containerd/api v1.8.0 // indirect
50-
github.com/containerd/containerd/v2 v2.0.5 // indirect
44+
github.com/containerd/console v1.0.5 // indirect
45+
github.com/containerd/containerd/api v1.9.0 // indirect
46+
github.com/containerd/containerd/v2 v2.1.4 // indirect
5147
github.com/containerd/continuity v0.4.5 // indirect
5248
github.com/containerd/errdefs v1.0.0 // indirect
5349
github.com/containerd/errdefs/pkg v0.3.0 // indirect
@@ -58,10 +54,10 @@ require (
5854
github.com/cpuguy83/dockercfg v0.3.2 // indirect
5955
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
6056
github.com/distribution/reference v0.6.0 // indirect
61-
github.com/docker/buildx v0.22.0 // indirect
62-
github.com/docker/cli-docs-tool v0.9.0 // indirect
57+
github.com/docker/buildx v0.29.1 // indirect
58+
github.com/docker/cli-docs-tool v0.10.0 // indirect
6359
github.com/docker/distribution v2.8.3+incompatible // indirect
64-
github.com/docker/docker-credential-helpers v0.8.2 // indirect
60+
github.com/docker/docker-credential-helpers v0.9.3 // indirect
6561
github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c // indirect
6662
github.com/docker/go-connections v0.6.0 // indirect
6763
github.com/docker/go-metrics v0.0.1 // indirect
@@ -73,12 +69,12 @@ require (
7369
github.com/fsnotify/fsevents v0.2.0 // indirect
7470
github.com/fvbommel/sortorder v1.1.0 // indirect
7571
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
76-
github.com/go-logr/logr v1.4.2 // indirect
72+
github.com/go-logr/logr v1.4.3 // indirect
7773
github.com/go-logr/stdr v1.2.2 // indirect
7874
github.com/go-ole/go-ole v1.2.6 // indirect
79-
github.com/go-openapi/jsonpointer v0.19.6 // indirect
75+
github.com/go-openapi/jsonpointer v0.21.0 // indirect
8076
github.com/go-openapi/jsonreference v0.20.2 // indirect
81-
github.com/go-openapi/swag v0.22.4 // indirect
77+
github.com/go-openapi/swag v0.23.0 // indirect
8278
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
8379
github.com/gofrs/flock v0.12.1 // indirect
8480
github.com/gogo/protobuf v1.3.2 // indirect
@@ -90,37 +86,31 @@ require (
9086
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
9187
github.com/gorilla/mux v1.8.1 // indirect
9288
github.com/gorilla/websocket v1.5.0 // indirect
93-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect
89+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect
9490
github.com/hashicorp/errwrap v1.1.0 // indirect
9591
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
9692
github.com/hashicorp/go-multierror v1.1.1 // indirect
9793
github.com/hashicorp/go-version v1.7.0 // indirect
98-
github.com/imdario/mergo v0.3.16 // indirect
99-
github.com/in-toto/in-toto-golang v0.5.0 // indirect
94+
github.com/in-toto/in-toto-golang v0.9.0 // indirect
10095
github.com/inconshreveable/mousetrap v1.1.0 // indirect
10196
github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf // indirect
10297
github.com/jonboulle/clockwork v0.5.0 // indirect
10398
github.com/josharian/intern v1.0.0 // indirect
10499
github.com/json-iterator/go v1.1.12 // indirect
105-
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
106100
github.com/klauspost/compress v1.18.0 // indirect
107101
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
108102
github.com/magiconair/properties v1.8.10 // indirect
109103
github.com/mailru/easyjson v0.7.7 // indirect
110-
github.com/mattn/go-colorable v0.1.13 // indirect
111-
github.com/mattn/go-isatty v0.0.20 // indirect
112-
github.com/mattn/go-runewidth v0.0.15 // indirect
104+
github.com/mattn/go-runewidth v0.0.16 // indirect
113105
github.com/mattn/go-shellwords v1.0.12 // indirect
114-
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect
115106
github.com/miekg/pkcs11 v1.1.1 // indirect
116107
github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect
117-
github.com/mitchellh/mapstructure v1.5.0 // indirect
118-
github.com/moby/buildkit v0.20.1 // indirect
108+
github.com/moby/buildkit v0.25.1 // indirect
119109
github.com/moby/docker-image-spec v1.3.1 // indirect
120110
github.com/moby/go-archive v0.1.0 // indirect
121111
github.com/moby/locker v1.0.1 // indirect
122112
github.com/moby/patternmatcher v0.6.0 // indirect
123-
github.com/moby/spdystream v0.4.0 // indirect
113+
github.com/moby/spdystream v0.5.0 // indirect
124114
github.com/moby/sys/atomicwriter v0.1.0 // indirect
125115
github.com/moby/sys/capability v0.4.0 // indirect
126116
github.com/moby/sys/mountinfo v0.7.2 // indirect
@@ -142,76 +132,71 @@ require (
142132
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
143133
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
144134
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
145-
github.com/prometheus/client_golang v1.20.5 // indirect
135+
github.com/prometheus/client_golang v1.22.0 // indirect
146136
github.com/prometheus/client_model v0.6.1 // indirect
147-
github.com/prometheus/common v0.55.0 // indirect
137+
github.com/prometheus/common v0.62.0 // indirect
148138
github.com/prometheus/procfs v0.15.1 // indirect
149-
github.com/r3labs/sse v0.0.0-20210224172625-26fe804710bc // indirect
150139
github.com/rivo/uniseg v0.2.0 // indirect
151-
github.com/secure-systems-lab/go-securesystemslib v0.4.0 // indirect
140+
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect
141+
github.com/secure-systems-lab/go-securesystemslib v0.6.0 // indirect
152142
github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b // indirect
153143
github.com/shibumi/go-pathspec v1.3.0 // indirect
154144
github.com/shirou/gopsutil/v4 v4.25.6 // indirect
155145
github.com/sirupsen/logrus v1.9.3 // indirect
156146
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect
157-
github.com/spf13/cobra v1.9.1 // indirect
158-
github.com/spf13/pflag v1.0.6 // indirect
147+
github.com/spf13/cobra v1.10.1 // indirect
148+
github.com/spf13/pflag v1.0.10 // indirect
159149
github.com/theupdateframework/notary v0.7.0 // indirect
160150
github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 // indirect
161151
github.com/tklauser/go-sysconf v0.3.12 // indirect
162152
github.com/tklauser/numcpus v0.6.1 // indirect
163-
github.com/tonistiigi/dchapes-mode v0.0.0-20241001053921-ca0759fec205 // indirect
164-
github.com/tonistiigi/fsutil v0.0.0-20250113203817-b14e27f4135a // indirect
165-
github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 // indirect
153+
github.com/tonistiigi/dchapes-mode v0.0.0-20250318174251-73d941a28323 // indirect
154+
github.com/tonistiigi/fsutil v0.0.0-20250605211040-586307ad452f // indirect
155+
github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 // indirect
166156
github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea // indirect
167157
github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab // indirect
168158
github.com/x448/float16 v0.8.4 // indirect
169-
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
170-
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
171-
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
172159
github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
173160
github.com/yusufpapurcu/wmi v1.2.4 // indirect
174-
github.com/zclconf/go-cty v1.16.0 // indirect
161+
github.com/zclconf/go-cty v1.17.0 // indirect
175162
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
176-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 // indirect
177-
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.56.0 // indirect
178-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect
179-
go.opentelemetry.io/otel v1.35.0 // indirect
180-
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.31.0 // indirect
181-
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.31.0 // indirect
182-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 // indirect
183-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 // indirect
184-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect
185-
go.opentelemetry.io/otel/metric v1.35.0 // indirect
186-
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
187-
go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect
188-
go.opentelemetry.io/otel/trace v1.35.0 // indirect
189-
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
190-
go.uber.org/mock v0.5.0 // indirect
163+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
164+
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 // indirect
165+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect
166+
go.opentelemetry.io/otel v1.36.0 // indirect
167+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 // indirect
168+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0 // indirect
169+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect
170+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect
171+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect
172+
go.opentelemetry.io/otel/metric v1.36.0 // indirect
173+
go.opentelemetry.io/otel/sdk v1.36.0 // indirect
174+
go.opentelemetry.io/otel/sdk/metric v1.36.0 // indirect
175+
go.opentelemetry.io/otel/trace v1.36.0 // indirect
176+
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
177+
go.yaml.in/yaml/v3 v3.0.4 // indirect
191178
golang.org/x/crypto v0.42.0 // indirect
192-
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
193179
golang.org/x/net v0.43.0 // indirect
194-
golang.org/x/oauth2 v0.28.0 // indirect
195-
golang.org/x/sys v0.36.0 // indirect
180+
golang.org/x/oauth2 v0.30.0 // indirect
181+
golang.org/x/sys v0.37.0 // indirect
196182
golang.org/x/term v0.35.0 // indirect
197183
golang.org/x/text v0.29.0 // indirect
198-
golang.org/x/time v0.6.0 // indirect
199-
google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422 // indirect
200-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
201-
google.golang.org/grpc v1.71.0 // indirect
202-
google.golang.org/protobuf v1.36.4 // indirect
203-
gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect
184+
golang.org/x/time v0.11.0 // indirect
185+
google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect
186+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect
187+
google.golang.org/grpc v1.74.2 // indirect
188+
google.golang.org/protobuf v1.36.9 // indirect
189+
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
204190
gopkg.in/inf.v0 v0.9.1 // indirect
205191
gopkg.in/ini.v1 v1.67.0 // indirect
206-
gopkg.in/yaml.v2 v2.4.0 // indirect
207-
k8s.io/api v0.31.2 // indirect
208-
k8s.io/apimachinery v0.31.2 // indirect
209-
k8s.io/client-go v0.31.2 // indirect
192+
k8s.io/api v0.32.3 // indirect
193+
k8s.io/apimachinery v0.32.3 // indirect
194+
k8s.io/client-go v0.32.3 // indirect
210195
k8s.io/klog/v2 v2.130.1 // indirect
211-
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
212-
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect
213-
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
214-
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
196+
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
197+
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
198+
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
199+
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
215200
sigs.k8s.io/yaml v1.4.0 // indirect
216201
tags.cncf.io/container-device-interface v1.0.1 // indirect
217202
)

0 commit comments

Comments
 (0)