Skip to content

Commit af62f82

Browse files
committed
Update ComposeContainer and DockerComposeContainer to the latest version of docker and update the constructors
1 parent 3a23d3c commit af62f82

File tree

2 files changed

+88
-16
lines changed

2 files changed

+88
-16
lines changed

core/src/main/java/org/testcontainers/containers/ComposeContainer.java

Lines changed: 51 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,42 +62,80 @@ public class ComposeContainer extends FailureDetectingExternalResource implement
6262

6363
public static final String COMPOSE_EXECUTABLE = SystemUtils.IS_OS_WINDOWS ? "docker.exe" : "docker";
6464

65-
public static final String DEFAULT_DOCKER_IMAGE = "docker:24.0.2";
65+
public static final String DEFAULT_DOCKER_IMAGE = "docker:27.5.0";
6666

6767
private final ComposeDelegate composeDelegate;
6868

6969
private String project;
7070

7171
private List<String> filesInDirectory = new ArrayList<>();
7272

73-
public ComposeContainer(File... composeFiles) {
74-
this(Arrays.asList(composeFiles));
73+
public ComposeContainer(DockerImageName image, File... composeFiles) {
74+
this(image, Arrays.asList(composeFiles));
7575
}
7676

77-
public ComposeContainer(List<File> composeFiles) {
78-
this(Base58.randomString(6).toLowerCase(), composeFiles);
77+
public ComposeContainer(DockerImageName image, List<File> composeFiles) {
78+
this(image,Base58.randomString(6).toLowerCase(),composeFiles);
7979
}
8080

81-
public ComposeContainer(String identifier, File... composeFiles) {
82-
this(identifier, Arrays.asList(composeFiles));
81+
public ComposeContainer(DockerImageName image, String identifier, File... composeFiles) {
82+
this(image,identifier, Arrays.asList(composeFiles));
8383
}
8484

85-
public ComposeContainer(String identifier, List<File> composeFiles) {
85+
public ComposeContainer(DockerImageName image, String identifier, List<File> composeFiles) {
8686
this.composeDelegate =
8787
new ComposeDelegate(
8888
ComposeDelegate.ComposeVersion.V2,
8989
composeFiles,
9090
identifier,
9191
COMPOSE_EXECUTABLE,
92-
DockerImageName.parse(
93-
TestcontainersConfiguration
94-
.getInstance()
95-
.getEnvVarOrUserProperty("compose.container.image", DEFAULT_DOCKER_IMAGE)
96-
)
92+
image
9793
);
9894
this.project = this.composeDelegate.getProject();
9995
}
10096

97+
/**
98+
* @deprecated
99+
* Use the new constructor ComposeContainer(DockerImageName image, File... composeFiles)
100+
*/
101+
@Deprecated
102+
public ComposeContainer(File... composeFiles) {
103+
this(getDockerImageName(),Arrays.asList(composeFiles));
104+
}
105+
/**
106+
* @deprecated
107+
* Use the new constructor ComposeContainer(DockerImageName image,List<File> composeFiles)
108+
*/
109+
@Deprecated
110+
public ComposeContainer(List<File> composeFiles) {
111+
this(getDockerImageName(), composeFiles);
112+
}
113+
/**
114+
* @deprecated
115+
* Use the new constructor ComposeContainer(DockerImageName image, String identifier, File... composeFile)
116+
*/
117+
@Deprecated
118+
public ComposeContainer(String identifier, File... composeFiles) {
119+
this(getDockerImageName(),identifier, Arrays.asList(composeFiles));
120+
}
121+
122+
/**
123+
* @deprecated
124+
* Use the new constructor ComposeContainer(DockerImageName image,String identifier, List<File> composeFiles)
125+
*/
126+
@Deprecated
127+
public ComposeContainer(String identifier, List<File> composeFiles) {
128+
this(getDockerImageName(),identifier, composeFiles);
129+
}
130+
131+
public static DockerImageName getDockerImageName() {
132+
return DockerImageName.parse(
133+
TestcontainersConfiguration
134+
.getInstance()
135+
.getEnvVarOrUserProperty("compose.container.image", DEFAULT_DOCKER_IMAGE)
136+
);
137+
}
138+
101139
@Override
102140
@Deprecated
103141
public Statement apply(Statement base, Description description) {

core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
import org.testcontainers.lifecycle.Startable;
1414
import org.testcontainers.utility.Base58;
1515
import org.testcontainers.utility.DockerImageName;
16+
import org.testcontainers.utility.TestcontainersConfiguration;
1617

1718
import java.io.File;
1819
import java.time.Duration;
1920
import java.util.ArrayList;
2021
import java.util.Arrays;
22+
import java.util.Collections;
2123
import java.util.HashMap;
2224
import java.util.HashSet;
2325
import java.util.List;
@@ -26,6 +28,8 @@
2628
import java.util.Set;
2729
import java.util.function.Consumer;
2830

31+
import static org.testcontainers.containers.ComposeContainer.getDockerImageName;
32+
2933
/**
3034
* Container which launches Docker Compose, for the purposes of launching a defined set of containers.
3135
*/
@@ -62,43 +66,73 @@ public class DockerComposeContainer<SELF extends DockerComposeContainer<SELF>>
6266

6367
public static final String COMPOSE_EXECUTABLE = SystemUtils.IS_OS_WINDOWS ? "docker-compose.exe" : "docker-compose";
6468

65-
private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("docker/compose:1.29.2");
66-
6769
private final ComposeDelegate composeDelegate;
6870

6971
private String project;
7072

7173
private List<String> filesInDirectory = new ArrayList<>();
7274

75+
76+
77+
public DockerComposeContainer(DockerImageName image, String identifier, File composeFile) {
78+
this(image, identifier, Collections.singletonList(composeFile));
79+
}
80+
81+
public DockerComposeContainer(DockerImageName image, List<File> composeFiles) {
82+
this(image,Base58.randomString(6).toLowerCase(),composeFiles);
83+
}
84+
85+
public DockerComposeContainer(DockerImageName image, String identifier, File... composeFiles) {
86+
this(image,identifier, Arrays.asList(composeFiles));
87+
}
88+
public DockerComposeContainer(DockerImageName image, String identifier, List<File> composeFiles) {
89+
this.composeDelegate =
90+
new ComposeDelegate(
91+
ComposeDelegate.ComposeVersion.V2,
92+
composeFiles,
93+
identifier,
94+
COMPOSE_EXECUTABLE,
95+
image
96+
);
97+
this.project = this.composeDelegate.getProject();
98+
}
99+
100+
73101
@Deprecated
74102
public DockerComposeContainer(File composeFile, String identifier) {
75103
this(identifier, composeFile);
76104
}
77105

106+
@Deprecated
78107
public DockerComposeContainer(File... composeFiles) {
79108
this(Arrays.asList(composeFiles));
80109
}
81110

111+
@Deprecated
82112
public DockerComposeContainer(List<File> composeFiles) {
83113
this(Base58.randomString(6).toLowerCase(), composeFiles);
84114
}
85115

116+
@Deprecated
86117
public DockerComposeContainer(String identifier, File... composeFiles) {
87118
this(identifier, Arrays.asList(composeFiles));
88119
}
89120

121+
@Deprecated
90122
public DockerComposeContainer(String identifier, List<File> composeFiles) {
91123
this.composeDelegate =
92124
new ComposeDelegate(
93125
ComposeDelegate.ComposeVersion.V1,
94126
composeFiles,
95127
identifier,
96128
COMPOSE_EXECUTABLE,
97-
DEFAULT_IMAGE_NAME
129+
getDockerImageName()
98130
);
99131
this.project = this.composeDelegate.getProject();
100132
}
101133

134+
135+
102136
@Override
103137
@Deprecated
104138
public Statement apply(Statement base, Description description) {

0 commit comments

Comments
 (0)