Skip to content

Commit 11bd114

Browse files
fokioneddumelendez
authored andcommitted
Update ComposeContainer and DockerComposeContainer to the latest version of docker and update the constructors
1 parent ed3406a commit 11bd114

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
@@ -60,42 +60,80 @@ public class ComposeContainer implements Startable {
6060

6161
public static final String COMPOSE_EXECUTABLE = SystemUtils.IS_OS_WINDOWS ? "docker.exe" : "docker";
6262

63-
public static final String DEFAULT_DOCKER_IMAGE = "docker:24.0.2";
63+
public static final String DEFAULT_DOCKER_IMAGE = "docker:27.5.0";
6464

6565
private final ComposeDelegate composeDelegate;
6666

6767
private String project;
6868

6969
private List<String> filesInDirectory = new ArrayList<>();
7070

71-
public ComposeContainer(File... composeFiles) {
72-
this(Arrays.asList(composeFiles));
71+
public ComposeContainer(DockerImageName image, File... composeFiles) {
72+
this(image, Arrays.asList(composeFiles));
7373
}
7474

75-
public ComposeContainer(List<File> composeFiles) {
76-
this(Base58.randomString(6).toLowerCase(), composeFiles);
75+
public ComposeContainer(DockerImageName image, List<File> composeFiles) {
76+
this(image,Base58.randomString(6).toLowerCase(),composeFiles);
7777
}
7878

79-
public ComposeContainer(String identifier, File... composeFiles) {
80-
this(identifier, Arrays.asList(composeFiles));
79+
public ComposeContainer(DockerImageName image, String identifier, File... composeFiles) {
80+
this(image,identifier, Arrays.asList(composeFiles));
8181
}
8282

83-
public ComposeContainer(String identifier, List<File> composeFiles) {
83+
public ComposeContainer(DockerImageName image, String identifier, List<File> composeFiles) {
8484
this.composeDelegate =
8585
new ComposeDelegate(
8686
ComposeDelegate.ComposeVersion.V2,
8787
composeFiles,
8888
identifier,
8989
COMPOSE_EXECUTABLE,
90-
DockerImageName.parse(
91-
TestcontainersConfiguration
92-
.getInstance()
93-
.getEnvVarOrUserProperty("compose.container.image", DEFAULT_DOCKER_IMAGE)
94-
)
90+
image
9591
);
9692
this.project = this.composeDelegate.getProject();
9793
}
9894

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

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

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
import org.testcontainers.lifecycle.Startable;
1212
import org.testcontainers.utility.Base58;
1313
import org.testcontainers.utility.DockerImageName;
14+
import org.testcontainers.utility.TestcontainersConfiguration;
1415

1516
import java.io.File;
1617
import java.time.Duration;
1718
import java.util.ArrayList;
1819
import java.util.Arrays;
20+
import java.util.Collections;
1921
import java.util.HashMap;
2022
import java.util.HashSet;
2123
import java.util.List;
@@ -24,6 +26,8 @@
2426
import java.util.Set;
2527
import java.util.function.Consumer;
2628

29+
import static org.testcontainers.containers.ComposeContainer.getDockerImageName;
30+
2731
/**
2832
* Container which launches Docker Compose, for the purposes of launching a defined set of containers.
2933
*/
@@ -58,43 +62,73 @@ public class DockerComposeContainer<SELF extends DockerComposeContainer<SELF>> i
5862

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

61-
private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("docker/compose:1.29.2");
62-
6365
private final ComposeDelegate composeDelegate;
6466

6567
private String project;
6668

6769
private List<String> filesInDirectory = new ArrayList<>();
6870

71+
72+
73+
public DockerComposeContainer(DockerImageName image, String identifier, File composeFile) {
74+
this(image, identifier, Collections.singletonList(composeFile));
75+
}
76+
77+
public DockerComposeContainer(DockerImageName image, List<File> composeFiles) {
78+
this(image,Base58.randomString(6).toLowerCase(),composeFiles);
79+
}
80+
81+
public DockerComposeContainer(DockerImageName image, String identifier, File... composeFiles) {
82+
this(image,identifier, Arrays.asList(composeFiles));
83+
}
84+
public DockerComposeContainer(DockerImageName image, String identifier, List<File> composeFiles) {
85+
this.composeDelegate =
86+
new ComposeDelegate(
87+
ComposeDelegate.ComposeVersion.V2,
88+
composeFiles,
89+
identifier,
90+
COMPOSE_EXECUTABLE,
91+
image
92+
);
93+
this.project = this.composeDelegate.getProject();
94+
}
95+
96+
6997
@Deprecated
7098
public DockerComposeContainer(File composeFile, String identifier) {
7199
this(identifier, composeFile);
72100
}
73101

102+
@Deprecated
74103
public DockerComposeContainer(File... composeFiles) {
75104
this(Arrays.asList(composeFiles));
76105
}
77106

107+
@Deprecated
78108
public DockerComposeContainer(List<File> composeFiles) {
79109
this(Base58.randomString(6).toLowerCase(), composeFiles);
80110
}
81111

112+
@Deprecated
82113
public DockerComposeContainer(String identifier, File... composeFiles) {
83114
this(identifier, Arrays.asList(composeFiles));
84115
}
85116

117+
@Deprecated
86118
public DockerComposeContainer(String identifier, List<File> composeFiles) {
87119
this.composeDelegate =
88120
new ComposeDelegate(
89121
ComposeDelegate.ComposeVersion.V1,
90122
composeFiles,
91123
identifier,
92124
COMPOSE_EXECUTABLE,
93-
DEFAULT_IMAGE_NAME
125+
getDockerImageName()
94126
);
95127
this.project = this.composeDelegate.getProject();
96128
}
97129

130+
131+
98132
@Override
99133
public void start() {
100134
synchronized (MUTEX) {

0 commit comments

Comments
 (0)