Reusable containers are an experimental capability that delivers a useful performance optimization: by keeping containers running and allowing multiple tests to reuse the same container, it's possible to shave off container start times. However, reusable containers are not suited for CI usage, and therefore activating the capability on desktop requires setting the
testcontainers.reuse.enable=true property in the local
With Testcontainers Desktop switching the "reuse" capability on and off is now as easy as clicking the corresponding option in the app's menu!
Please note that, as an experimental capability, the implementation of reusable containers currently differs across Testcontainers libraries:
Some Testcontainers languages do not yet implement
reuse in Testcontainers Java does not currently support networks, in the sense that they can change the container's configuration and prevent reuse. In turn, this can impact methods such as
Testcontainers Go matches the container on
req.Name alone, instead of its full configuration, and within a single package.
Testcontainers Node does not rely on the
testcontainers.reuse.enable=true property, and therefore this feature will not deactivate reuse as expected.
reuse will prevent Ryuk from cleaning-up containers, they still get stopped by regular lifecycle commands (e.g.
close() or similar). In practice, this means they're best used via the singleton pattern.