Skip to content

Commit 2bdbc8c

Browse files
kivieweddumelendez
andauthored
Don't delete images if deleteOnExit is false (#5391)
Co-authored-by: Eddú Meléndez Gonzales <[email protected]>
1 parent f60051c commit 2bdbc8c

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,6 @@ protected final String resolve() {
8787
DockerClient dockerClient = DockerClientFactory.instance().client();
8888

8989
try {
90-
if (deleteOnExit) {
91-
ResourceReaper.instance().registerImageForCleanup(dockerImageName);
92-
}
9390

9491
BuildImageResultCallback resultCallback = new BuildImageResultCallback() {
9592
@Override
@@ -114,9 +111,12 @@ public void onNext(BuildResponseItem item) {
114111
if (buildImageCmd.getLabels() != null) {
115112
labels.putAll(buildImageCmd.getLabels());
116113
}
114+
117115
labels.putAll(DockerClientFactory.DEFAULT_LABELS);
118-
//noinspection deprecation
119-
labels.putAll(ResourceReaper.instance().getLabels());
116+
if (deleteOnExit) {
117+
//noinspection deprecation
118+
labels.putAll(ResourceReaper.instance().getLabels());
119+
}
120120
buildImageCmd.withLabels(labels);
121121

122122
prePullDependencyImages(dependencyImageNames);

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.github.dockerjava.api.command.InspectImageResponse;
55
import org.junit.Test;
66
import org.testcontainers.DockerClientFactory;
7+
import org.testcontainers.utility.Base58;
78

89
import static org.assertj.core.api.Assertions.assertThat;
910

@@ -24,4 +25,22 @@ public void shouldAddDefaultLabels() {
2425
.containsAllEntriesOf(DockerClientFactory.DEFAULT_LABELS);
2526
}
2627

28+
@Test
29+
public void shouldNotAddSessionLabelIfDeleteOnExitIsFalse() {
30+
ImageFromDockerfile image = new ImageFromDockerfile("localhost/testcontainers/" + Base58.randomString(16).toLowerCase(), false)
31+
.withDockerfileFromBuilder(it -> it.from("scratch"));
32+
String imageId = image.resolve();
33+
DockerClient dockerClient = DockerClientFactory.instance().client();
34+
35+
try {
36+
InspectImageResponse inspectImageResponse = dockerClient.inspectImageCmd(imageId).exec();
37+
assertThat(inspectImageResponse.getConfig().getLabels())
38+
.doesNotContainKey(DockerClientFactory.TESTCONTAINERS_SESSION_ID_LABEL);
39+
} finally {
40+
// ensure the image is deleted, even if the test fails
41+
dockerClient.removeImageCmd(imageId).exec();
42+
}
43+
44+
}
45+
2746
}

0 commit comments

Comments
 (0)