Skip to content

ministackorg/testcontainers-ministack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MiniStack

Testcontainers MiniStack

Official Testcontainers module for MiniStack — free, open-source AWS emulator.

Maven Central License MiniStack


Java

Maven Central

Installation

Maven

<dependency>
  <groupId>org.ministack</groupId>
  <artifactId>testcontainers-ministack</artifactId>
  <version>0.1.3</version>
  <scope>test</scope>
</dependency>

Gradle

testImplementation 'org.ministack:testcontainers-ministack:0.1.3'

Quick start

try(MiniStackContainer ministack = new MiniStackContainer()){
    ministack.start();
    String endpoint = ministack.getEndpoint();

    S3Client s3 = S3Client.builder()
            .endpointOverride(URI.create(endpoint))
            .region(ministack.getRegion())
            .credentialsProvider(StaticCredentialsProvider.create(
                    AwsBasicCredentials.create(ministack.getAccessKey(), ministack.getSecretKey())))
            .forcePathStyle(true)
            .build();

    s3.createBucket(b -> b.bucket("my-bucket"));
}

Spring Boot

@Bean
@ServiceConnection
public MiniStackContainer miniStackContainer() {
    return new MiniStackContainer("latest");
}

Specific version

// Pin to a specific MiniStack release
MiniStackContainer ministack = new MiniStackContainer("1.2.5");

Real Infrastructure

try(MiniStackContainer ministack = new MiniStackContainer()){
    ministack.withRealInfrastructure();
    ministack.start();
    String endpoint = ministack.getEndpoint();

    RdsClient rds = RdsClient.builder().endpointOverride(endpoint()).region(region)
            .credentialsProvider(creds).build();

    CreateDbInstanceResponse createDbInstanceResponse = rds.createDBInstance(b -> b
            .dbInstanceIdentifier("postgres")
            .dbInstanceClass("db.t3.micro")
            .engine("postgres")
            .masterUsername("admin")
            .masterUserPassword("password")
            .dbName("postgresdb")
            .allocatedStorage(20)
    );
    
    // Ministack will create and start a postgres docker container
    // Before you connect to postgres you have to wait until the container is started
}

What you get

  • All 41 AWS services on a single container
  • Health check waits for readiness automatically
  • getEndpoint() returns the mapped URL for SDK configuration
  • Works with any AWS SDK (Java, Go, Python, Node.js)
  • Real database containers (RDS, ElastiCache) when Docker socket is mounted

Other languages

Coming when requested. Open an issue or upvote ministackorg/ministack.

Language Status
Java Published on Maven Central
Go Planned
Python Planned
.NET Planned

License

MIT

Packages

 
 
 

Contributors

Languages