Skip to content

Commit bcd37ab

Browse files
committed
Cleanup ParsedDockerfile and ImageDockerfile
1 parent dbb9be0 commit bcd37ab

File tree

3 files changed

+23
-19
lines changed

3 files changed

+23
-19
lines changed

core/src/main/java/org/testcontainers/images/ParsedDockerfile.java

+13-13
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@ public class ParsedDockerfile {
2929
private final Path dockerFilePath;
3030

3131
@Getter
32-
private Set<String> dependencyImageNames = Collections.emptySet();
32+
private final Set<String> dependencyImageNames;
3333

3434
public ParsedDockerfile(Path dockerFilePath) {
3535
this.dockerFilePath = dockerFilePath;
36-
parse(read());
36+
this.dependencyImageNames = parse(read());
3737
}
3838

3939
@VisibleForTesting
4040
ParsedDockerfile(List<String> lines) {
4141
this.dockerFilePath = Paths.get("dummy.Dockerfile");
42-
parse(lines);
42+
this.dependencyImageNames = parse(lines);
4343
}
4444

4545
private List<String> read() {
@@ -56,17 +56,17 @@ private List<String> read() {
5656
}
5757
}
5858

59-
private void parse(List<String> lines) {
60-
dependencyImageNames =
61-
lines
62-
.stream()
63-
.map(FROM_LINE_PATTERN::matcher)
64-
.filter(Matcher::matches)
65-
.map(matcher -> matcher.group("image"))
66-
.collect(Collectors.toSet());
59+
private Set<String> parse(List<String> lines) {
60+
Set<String> imageNames = lines
61+
.stream()
62+
.map(FROM_LINE_PATTERN::matcher)
63+
.filter(Matcher::matches)
64+
.map(matcher -> matcher.group("image"))
65+
.collect(Collectors.toSet());
6766

68-
if (!dependencyImageNames.isEmpty()) {
69-
log.debug("Found dependency images in Dockerfile {}: {}", dockerFilePath, dependencyImageNames);
67+
if (!imageNames.isEmpty()) {
68+
log.debug("Found dependency images in Dockerfile {}: {}", dockerFilePath, imageNames);
7069
}
70+
return imageNames;
7171
}
7272
}

core/src/main/java/org/testcontainers/images/builder/ImageFromDockerfile.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public class ImageFromDockerfile
5050

5151
private final String dockerImageName;
5252

53-
private boolean deleteOnExit = true;
53+
private final boolean deleteOnExit;
5454

5555
private final Map<String, Transferable> transferables = new HashMap<>();
5656

@@ -92,6 +92,7 @@ public ImageFromDockerfile withFileFromTransferable(String path, Transferable tr
9292
protected final String resolve() {
9393
Logger logger = DockerLoggerFactory.getLogger(dockerImageName);
9494

95+
//noinspection resource
9596
DockerClient dockerClient = DockerClientFactory.instance().client();
9697

9798
try {
@@ -103,12 +104,12 @@ public void onNext(BuildResponseItem item) {
103104
if (item.isErrorIndicated()) {
104105
logger.error(item.getErrorDetail().getMessage());
105106
} else {
106-
logger.debug(StringUtils.chomp(item.getStream(), "\n"));
107+
logger.debug(StringUtils.removeEnd(item.getStream(), "\n"));
107108
}
108109
}
109110
};
110111

111-
// We have to use pipes to avoid high memory consumption since users might want to build really big images
112+
// We have to use pipes to avoid high memory consumption since users might want to build huge images
112113
@Cleanup
113114
PipedInputStream in = new PipedInputStream();
114115
@Cleanup
@@ -165,7 +166,7 @@ public void onNext(BuildResponseItem item) {
165166
}
166167

167168
protected void configure(BuildImageCmd buildImageCmd) {
168-
buildImageCmd.withTag(this.getDockerImageName());
169+
buildImageCmd.withTags(Collections.singleton(getDockerImageName()));
169170
this.dockerFilePath.ifPresent(buildImageCmd::withDockerfilePath);
170171
this.dockerfile.ifPresent(p -> {
171172
buildImageCmd.withDockerfile(p.toFile());
@@ -183,8 +184,6 @@ protected void configure(BuildImageCmd buildImageCmd) {
183184
}
184185

185186
private void prePullDependencyImages(Set<String> imagesToPull) {
186-
final DockerClient dockerClient = DockerClientFactory.instance().client();
187-
188187
imagesToPull.forEach(imageName -> {
189188
try {
190189
log.info(

core/src/test/java/org/testcontainers/images/builder/ImageFromDockerfileTest.java

+5
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@ public void shouldAddDefaultLabels() {
1616

1717
String imageId = image.resolve();
1818

19+
//noinspection resource
1920
DockerClient dockerClient = DockerClientFactory.instance().client();
2021

2122
InspectImageResponse inspectImageResponse = dockerClient.inspectImageCmd(imageId).exec();
2223

24+
assertThat(inspectImageResponse.getConfig()).isNotNull();
2325
assertThat(inspectImageResponse.getConfig().getLabels())
2426
.containsAllEntriesOf(DockerClientFactory.DEFAULT_LABELS);
2527
}
@@ -32,10 +34,13 @@ public void shouldNotAddSessionLabelIfDeleteOnExitIsFalse() {
3234
)
3335
.withDockerfileFromBuilder(it -> it.from("scratch"));
3436
String imageId = image.resolve();
37+
38+
//noinspection resource
3539
DockerClient dockerClient = DockerClientFactory.instance().client();
3640

3741
try {
3842
InspectImageResponse inspectImageResponse = dockerClient.inspectImageCmd(imageId).exec();
43+
assertThat(inspectImageResponse.getConfig()).isNotNull();
3944
assertThat(inspectImageResponse.getConfig().getLabels())
4045
.doesNotContainKey(DockerClientFactory.TESTCONTAINERS_SESSION_ID_LABEL);
4146
} finally {

0 commit comments

Comments
 (0)