testcontainers/testcontainers-rs

A library for integration-testing against docker containers from within Rust.

Rust

1,136

815 commits

updated Oct 9, 2026

See the code

README

Testcontainers-rs

Continuous Integration Crates.io Docs.rs Slack

Testcontainers-rs is the official Rust language fork of http://testcontainers.org.

Usage

testcontainers is the core crate

The crate provides an API for working with containers in a test environment.

  1. Depend on testcontainers
  2. Implement testcontainers::core::Image for necessary docker-images
  3. Run it with any available runner testcontainers::runners::* (use blocking feature for synchronous API)

Example:

  • Blocking API (under 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");
}
  • Async API
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");
}

Ready-to-use images

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

License

Licensed under either of

at your option.

docker
integration-testing
rust
test-automation
testcontainers
testcontainers-rust
testing

Project health

Overall

5.2/10

Maintained

10/10

Code review

8/10
OpenSSF Scorecard

Latest release

0.28.0 · Aug 6, 2026

Releases this year

12

Significant stargazers

(top 24 of 39)

Yuki Okushi

1,519 followers · starred Dec 2023

Takayuki Maeda

482 followers · starred Aug 2023

Bryant Biggs

653 followers · starred Dec 2025

Hiroaki Yutani

567 followers · starred Nov 2025

testcontainers/testcontainers-rs

A library for integration-testing against docker containers from within Rust.

Rust

1,136

815 commits

updated Oct 9, 2026

See the code

README

Testcontainers-rs

Continuous Integration Crates.io Docs.rs Slack

Testcontainers-rs is the official Rust language fork of http://testcontainers.org.

Usage

testcontainers is the core crate

The crate provides an API for working with containers in a test environment.

  1. Depend on testcontainers
  2. Implement testcontainers::core::Image for necessary docker-images
  3. Run it with any available runner testcontainers::runners::* (use blocking feature for synchronous API)

Example:

  • Blocking API (under 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");
}
  • Async API
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");
}

Ready-to-use images

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

License

Licensed under either of

at your option.

docker
integration-testing
rust
test-automation
testcontainers
testcontainers-rust
testing

Project health

Overall

5.2/10

Maintained

10/10

Code review

8/10
OpenSSF Scorecard

Latest release

0.28.0 · Aug 6, 2026

Releases this year

12

Significant stargazers

(top 24 of 39)

Yuki Okushi

1,519 followers · starred Dec 2023

Takayuki Maeda

482 followers · starred Aug 2023

Bryant Biggs

653 followers · starred Dec 2025

Hiroaki Yutani

567 followers · starred Nov 2025