diff --git a/BUILD b/BUILD
index 5b434d5..f4d80f3 100644
--- a/BUILD
+++ b/BUILD
@@ -120,10 +120,10 @@
         "@docker-java-transport//jar",
         "@duct-tape//jar",
         "@global-refdb//jar",
+        "@google-auth-library-oauth2-http//jar",
         "@google-cloud-core//jar",
         "@google-cloud-spanner//jar",
-        "@testcontainer-localstack//jar",
+        "@testcontainer-gcloud//jar",
         "@testcontainers//jar",
-        "@google-auth-library-oauth2-http//jar",
     ],
 )
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
index b4dba16..94f3ae3 100644
--- a/external_plugin_deps.bzl
+++ b/external_plugin_deps.bzl
@@ -417,18 +417,18 @@
         artifact = "com.gerritforge:global-refdb:3.3.2.1",
     )
 
-    TESTCONTAINERS_VERSION = "1.18.3"
+    TESTCONTAINERS_VERSION = "1.19.0"
 
     maven_jar(
         name = "testcontainers",
         artifact = "org.testcontainers:testcontainers:" + TESTCONTAINERS_VERSION,
-        sha1 = "a82f6258f92d50d278b9c67bdf5eabcaa5c08654",
+        sha1 = "f7794a79339b2e35f6be6507987deb7f7e3c3c0d",
     )
 
     maven_jar(
-        name = "testcontainer-localstack",
-        artifact = "org.testcontainers:localstack:" + TESTCONTAINERS_VERSION,
-        sha1 = "2b7a8d4522330217545c4234b916b6b77f5c6f95",
+        name = "testcontainer-gcloud",
+        artifact = "org.testcontainers:gcloud:" + TESTCONTAINERS_VERSION,
+        sha1 = "cea5741575fc8892f432991203aa8cbf8ddf85b4",
     )
 
     DOCKER_JAVA_VERS = "3.3.2"
diff --git a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerEmulatorContainer.java b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java
similarity index 81%
rename from src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerEmulatorContainer.java
rename to src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java
index 9ee1043..8b7fcfe 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerEmulatorContainer.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java
@@ -39,29 +39,17 @@
 import java.util.concurrent.ExecutionException;
 import org.eclipse.jgit.lib.Config;
 import org.junit.Ignore;
-import org.testcontainers.containers.GenericContainer;
-import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.containers.SpannerEmulatorContainer;
+import org.testcontainers.utility.DockerImageName;
 
 @Ignore
-public class SpannerEmulatorContainer {
-  public static class Container extends GenericContainer<Container> {
-    public static String EMULATOR_VERSION = "1.5.7";
-
-    public Container() {
-      super("gcr.io/cloud-spanner-emulator/emulator:" + EMULATOR_VERSION);
-    }
-  }
-
+public class EmulatedSpannerRefDb {
   public static final String PROJECT_ID = "test";
   public static final String SPANNER_INSTANCE_ID = "instance";
   public static final String SPANNER_DATABASE_ID = "refdb";
-  private static final int GRPC_PORT = 9010;
-  private static final int REST_PORT = 9020;
   private static final String pluginName = "spanner-refdb";
 
-  private final Container container;
-  private final Integer grpcPort;
-  private final Integer restPort;
+  private final SpannerEmulatorContainer container;
 
   private final Spanner spanner;
   private final InstanceAdminClient instanceAdminClient;
@@ -72,18 +60,15 @@
   private final Configuration pluginConfig;
 
   @Inject
-  @SuppressWarnings("resource")
-  public SpannerEmulatorContainer() throws Exception {
+  public EmulatedSpannerRefDb() throws Exception {
     container =
-        new Container().withExposedPorts(GRPC_PORT, REST_PORT).waitingFor(Wait.forListeningPort());
+        new SpannerEmulatorContainer(
+            DockerImageName.parse("gcr.io/cloud-spanner-emulator/emulator").withTag("1.5.9"));
     container.start();
-    grpcPort = container.getMappedPort(GRPC_PORT);
-    restPort = container.getMappedPort(REST_PORT);
     System.out.println(
-        "Spanner emulator container started and is listening on ports "
-            + grpcPort
-            + ", "
-            + restPort);
+        String.format(
+            "Spanner emulator container started and is listening on %s",
+            container.getEmulatorGrpcEndpoint()));
 
     spanner = getEmulatorOptions().getService();
     instanceAdminClient = spanner.getInstanceAdminClient();
@@ -111,18 +96,10 @@
     System.out.println("Spanner emulator container was stopped");
   }
 
-  public Container getContainer() {
+  public SpannerEmulatorContainer getContainer() {
     return container;
   }
 
-  public Integer getGrpcPort() {
-    return grpcPort;
-  }
-
-  public Integer getRestPort() {
-    return restPort;
-  }
-
   public Database getSpannerDatabase() {
     return spannerDatabase;
   }
@@ -133,7 +110,7 @@
 
   private SpannerOptions getEmulatorOptions() {
     return SpannerOptions.newBuilder()
-        .setEmulatorHost("localhost:" + getGrpcPort())
+        .setEmulatorHost(container.getEmulatorGrpcEndpoint())
         .setCredentials(NoCredentials.getInstance())
         .setProjectId(PROJECT_ID)
         .build();
diff --git a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabaseTest.java b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabaseTest.java
index 751e7bc..607256b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabaseTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabaseTest.java
@@ -30,12 +30,12 @@
 
 public class SpannerRefDatabaseTest implements RefFixture {
 
-  private SpannerEmulatorContainer emulator;
+  private EmulatedSpannerRefDb emulator;
   private SpannerRefDatabase refdb;
 
   @Before
   public void setup() throws Exception {
-    emulator = new SpannerEmulatorContainer();
+    emulator = new EmulatedSpannerRefDb();
     refdb = emulator.getSpannerRefDatabase();
   }
 
