A library for integration-testing against docker containers from within Rust.
See the codeTestcontainers-rs is the official Rust language fork of http://testcontainers.org.
testcontainers is the core crateThe crate provides an API for working with containers in a test environment.
testcontainerstestcontainers::core::Image for necessary docker-imagestestcontainers::runners::* (use blocking feature for synchronous API)blocking feature)use testcontainers::{core::{IntoContainerPort, WaitFor}, runners::SyncRunner, GenericImage, ImageExt};
#[test]
fn test_redis() {
let container = GenericImage::new("redis", "7.2.4")
.with_exposed_port(6379.tcp())
.with_wait_for(WaitFor::message_on_stdout("Ready to accept connections"))
.with_network("bridge")
.with_env_var("DEBUG", "1")
.start()
.expect("Failed to start Redis");
}
use testcontainers::{core::{IntoContainerPort, WaitFor}, runners::AsyncRunner, GenericImage, ImageExt};
#[tokio::test]
async fn test_redis() {
let container = GenericImage::new("redis", "7.2.4")
.with_exposed_port(6379.tcp())
.with_wait_for(WaitFor::message_on_stdout("Ready to accept connections"))
.with_network("bridge")
.with_env_var("DEBUG", "1")
.start()
.await
.expect("Failed to start Redis");
}
The easiest way to use testcontainers is to depend on ready-to-use images (aka modules).
Modules are available as a community-maintained crate: testcontainers-modules
Licensed under either of
at your option.
Overall
Maintained
Code review
crates.io
Latest release
Releases this year
(top 24 of 39)
1,519 followers · starred Dec 2023
482 followers · starred Aug 2023
653 followers · starred Dec 2025
567 followers · starred Nov 2025
A library for integration-testing against docker containers from within Rust.
See the codeTestcontainers-rs is the official Rust language fork of http://testcontainers.org.
testcontainers is the core crateThe crate provides an API for working with containers in a test environment.
testcontainerstestcontainers::core::Image for necessary docker-imagestestcontainers::runners::* (use blocking feature for synchronous API)blocking feature)use testcontainers::{core::{IntoContainerPort, WaitFor}, runners::SyncRunner, GenericImage, ImageExt};
#[test]
fn test_redis() {
let container = GenericImage::new("redis", "7.2.4")
.with_exposed_port(6379.tcp())
.with_wait_for(WaitFor::message_on_stdout("Ready to accept connections"))
.with_network("bridge")
.with_env_var("DEBUG", "1")
.start()
.expect("Failed to start Redis");
}
use testcontainers::{core::{IntoContainerPort, WaitFor}, runners::AsyncRunner, GenericImage, ImageExt};
#[tokio::test]
async fn test_redis() {
let container = GenericImage::new("redis", "7.2.4")
.with_exposed_port(6379.tcp())
.with_wait_for(WaitFor::message_on_stdout("Ready to accept connections"))
.with_network("bridge")
.with_env_var("DEBUG", "1")
.start()
.await
.expect("Failed to start Redis");
}
The easiest way to use testcontainers is to depend on ready-to-use images (aka modules).
Modules are available as a community-maintained crate: testcontainers-modules
Licensed under either of
at your option.
Overall
Maintained
Code review
crates.io
Latest release
Releases this year
(top 24 of 39)
1,519 followers · starred Dec 2023
482 followers · starred Aug 2023
653 followers · starred Dec 2025
567 followers · starred Nov 2025