diff --git a/testing-modules/pom.xml b/testing-modules/pom.xml
index 2d1d35680efb..38fe78c6291c 100644
--- a/testing-modules/pom.xml
+++ b/testing-modules/pom.xml
@@ -75,6 +75,7 @@
mockito-3
mockito-4
gatling-java
+ test-containers-podman
diff --git a/testing-modules/test-containers-podman/pom.xml b/testing-modules/test-containers-podman/pom.xml
new file mode 100644
index 000000000000..74985b2542a4
--- /dev/null
+++ b/testing-modules/test-containers-podman/pom.xml
@@ -0,0 +1,129 @@
+
+
+ 4.0.0
+
+
+ com.baeldung
+ testing-modules
+ 1.0.0-SNAPSHOT
+
+
+ test-containers-podman
+ 1.0-SNAPSHOT
+ test-containers-podman
+ Test Containers Using Podman
+ jar
+
+
+ 2.0.1
+ 2.2.4
+
+
+
+
+ org.testcontainers
+ testcontainers
+ ${testcontainers.version}
+ test
+
+
+ org.testcontainers
+ junit-jupiter
+ 1.21.3
+ test
+
+
+ org.testcontainers
+ testcontainers-mysql
+ ${testcontainers.version}
+ test
+
+
+ org.testcontainers
+ kafka
+ 1.21.3
+ test
+
+
+ com.redis
+ testcontainers-redis
+ ${redis.testcontainers.version}
+ test
+
+
+
+ redis.clients
+ jedis
+ 5.1.0
+ test
+
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.10.2
+ test
+
+
+
+ com.mysql
+ mysql-connector-j
+ 9.5.0
+ test
+
+
+
+ org.apache.kafka
+ kafka-clients
+ 3.6.1
+ test
+
+
+
+
+
+
+
+ src/test/resources
+ true
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+
+ unix://${env.XDG_RUNTIME_DIR}/podman/podman.sock
+ true
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+
+
+ unix://${env.XDG_RUNTIME_DIR}/podman/podman.sock
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 9
+ 9
+
+
+
+
+
diff --git a/testing-modules/test-containers-podman/src/test/java/com.baeldung.testcontainers.podman/KafkaLiveTest.java b/testing-modules/test-containers-podman/src/test/java/com.baeldung.testcontainers.podman/KafkaLiveTest.java
new file mode 100644
index 000000000000..d6a3e3cab0b8
--- /dev/null
+++ b/testing-modules/test-containers-podman/src/test/java/com.baeldung.testcontainers.podman/KafkaLiveTest.java
@@ -0,0 +1,58 @@
+package com.baeldung.testcontainers.podman;
+
+import org.apache.kafka.clients.consumer.ConsumerConfig;
+import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.apache.kafka.clients.consumer.ConsumerRecords;
+import org.apache.kafka.clients.consumer.KafkaConsumer;
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.clients.producer.ProducerConfig;
+import org.apache.kafka.clients.producer.ProducerRecord;
+import org.apache.kafka.common.serialization.StringDeserializer;
+import org.apache.kafka.common.serialization.StringSerializer;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.testcontainers.containers.KafkaContainer;
+import org.testcontainers.utility.DockerImageName;
+
+import java.time.Duration;
+import java.util.Collections;
+import java.util.Properties;
+
+public class KafkaLiveTest {
+
+ @Test
+ void whenProducingMessage_thenConsumerReceivesIt() {
+ DockerImageName image = DockerImageName.parse("confluentinc/cp-kafka:7.6.1");
+ try (KafkaContainer kafka = new KafkaContainer(image)) {
+ kafka.start();
+
+ String bootstrap = kafka.getBootstrapServers();
+ String topic = "hello";
+
+ Properties prodProps = new Properties();
+ prodProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrap);
+ prodProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
+ prodProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
+
+ try (KafkaProducer producer = new KafkaProducer<>(prodProps)) {
+ producer.send(new ProducerRecord<>(topic, "key", "hello")).get();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ Properties consProps = new Properties();
+ consProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrap);
+ consProps.put(ConsumerConfig.GROUP_ID_CONFIG, "test-group");
+ consProps.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
+ consProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
+ consProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
+
+ try (KafkaConsumer consumer = new KafkaConsumer<>(consProps)) {
+ consumer.subscribe(Collections.singletonList(topic));
+ ConsumerRecords records = consumer.poll(Duration.ofSeconds(10));
+ ConsumerRecord first = records.iterator().next();
+ Assertions.assertEquals("hello", first.value());
+ }
+ }
+ }
+}
diff --git a/testing-modules/test-containers-podman/src/test/java/com.baeldung.testcontainers.podman/MysqlLiveTest.java b/testing-modules/test-containers-podman/src/test/java/com.baeldung.testcontainers.podman/MysqlLiveTest.java
new file mode 100644
index 000000000000..e6df37781ba1
--- /dev/null
+++ b/testing-modules/test-containers-podman/src/test/java/com.baeldung.testcontainers.podman/MysqlLiveTest.java
@@ -0,0 +1,32 @@
+package com.baeldung.testcontainers.podman;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.testcontainers.mysql.MySQLContainer;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.Statement;
+
+class MysqlLiveTest {
+
+ @Test
+ void whenQueryingDatabase_thenReturnsOne() throws Exception {
+
+ try (MySQLContainer mysql = new MySQLContainer("mysql:8.4")) {
+ mysql.start();
+
+ try (Connection conn = DriverManager.getConnection(
+ mysql.getJdbcUrl(), mysql.getUsername(), mysql.getPassword());
+ Statement st = conn.createStatement()) {
+
+ st.execute("CREATE TABLE t(id INT PRIMARY KEY)");
+ st.execute("INSERT INTO t VALUES (1)");
+ ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM t");
+ rs.next();
+ Assertions.assertEquals(1, rs.getInt(1));
+ }
+ }
+ }
+}
diff --git a/testing-modules/test-containers-podman/src/test/java/com.baeldung.testcontainers.podman/RedisLiveTest.java b/testing-modules/test-containers-podman/src/test/java/com.baeldung.testcontainers.podman/RedisLiveTest.java
new file mode 100644
index 000000000000..02f9075279b3
--- /dev/null
+++ b/testing-modules/test-containers-podman/src/test/java/com.baeldung.testcontainers.podman/RedisLiveTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.testcontainers.podman;
+
+
+import com.redis.testcontainers.RedisContainer;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import redis.clients.jedis.Jedis;
+
+class RedisLiveTest {
+
+ @Test
+ void whenSettingValue_thenCanGetItBack() {
+ try (RedisContainer redis = new RedisContainer("redis:7-alpine").withExposedPorts(6379)) {
+ redis.start();
+
+ String host = redis.getHost();
+ int port = redis.getFirstMappedPort();
+
+ try (Jedis jedis = new Jedis(host, port)) {
+ jedis.set("greeting", "hello");
+ String value = jedis.get("greeting");
+ Assertions.assertEquals("hello", value);
+ }
+ }
+ }
+}