1010import java .io .IOException ;
1111import java .net .InetSocketAddress ;
1212import java .net .Socket ;
13+ import java .nio .file .Paths ;
1314import java .util .Map ;
1415import org .jetbrains .annotations .NotNull ;
1516import org .junit .jupiter .api .TestInfo ;
1617import org .slf4j .Logger ;
1718import org .slf4j .LoggerFactory ;
1819import org .testcontainers .containers .Network ;
20+ import org .testcontainers .images .builder .ImageFromDockerfile ;
1921import org .testcontainers .mongodb .MongoDBContainer ;
2022import org .testcontainers .toxiproxy .ToxiproxyContainer ;
2123import org .testcontainers .utility .DockerImageName ;
@@ -41,8 +43,6 @@ public class MongoService implements Closeable {
4143 // We do logging in some static initializers, so this needs to be initialized first
4244 private static final Logger LOGGER = LoggerFactory .getLogger (MongoService .class );
4345
44- private static final DockerImageName MONGODB_IMAGE_NAME = DockerImageName .parse ("mongo:8.0" );
45-
4646 private final MongoClient mongoClient = MongoClients .create (normalClientSettings );
4747
4848 // Expensive stuff shared among instances as much as possible, hence static
@@ -113,18 +113,28 @@ private static MongoDBContainer mongoContainer() {
113113 * @return just the {@link MongoDBContainer} with no options, and not yet started
114114 */
115115 static MongoDBContainer newPlainMongoContainer () {
116- return new MongoDBContainer (MONGODB_IMAGE_NAME );
116+ return new MongoDBContainer (newContainerFromDockerfile (
117+ "mongo" ,
118+ "src/test/resources/mongo.dockerfile" )
119+ );
117120 }
118121
119122 private static ToxiproxyContainer toxiproxyContainer () {
120123 ToxiproxyContainer result = new ToxiproxyContainer (
121- DockerImageName .parse ("ghcr.io/shopify/toxiproxy:2.12.0" )
122- .asCompatibleSubstituteFor ("shopify/toxiproxy" ))
123- .withNetwork (NETWORK );
124+ newContainerFromDockerfile (
125+ "shopify/toxiproxy" ,
126+ "src/test/resources/toxiproxy.dockerfile" )
127+ ).withNetwork (NETWORK );
124128 result .start ();
125129 return result ;
126130 }
127131
132+ private static DockerImageName newContainerFromDockerfile (String otherImageName , String filePath ) {
133+ return DockerImageName .parse (new ImageFromDockerfile ()
134+ .withDockerfile (Paths .get (filePath )).get ()
135+ ).asCompatibleSubstituteFor (otherImageName );
136+ }
137+
128138 private static ToxiproxyClient createToxiproxyClient () {
129139 return new ToxiproxyClient (
130140 TOXIPROXY_CONTAINER .getHost (),
0 commit comments