Skip to content

v0.1.0-alpha.0 — first public alpha

Pre-release
Pre-release

Choose a tag to compare

@cppudge cppudge released this 04 Jul 14:02

First public alpha of testcontainers-cpp — a native C++20 port of Testcontainers: spin up real Docker containers from your integration tests and tear them down automatically. No docker CLI, no Rust bridge — a pure C++ client talking to the Docker Engine HTTP API directly (Boost.Beast/Asio).

Highlights

  • Containers: GenericImageContainer lifecycle with typed config (env, ports, mounts, networks, labels, entrypoint, workdir/user, tty, host config patches), lifecycle hooks, startup retry, and container reuse.
  • Wait strategies: log, HTTP, health, port, exit, and composite waits with per-strategy deadlines.
  • Exec: stdin (HTTP 101 upgrade + half-close), tty, streaming output, exit codes.
  • Images: pull with registry auth (config.json incl. credential helpers), build from Dockerfile (GenericBuildableImage), image substitution.
  • Networks & volumes: create/inspect/remove, IPAM basics, volume seeding.
  • Copy: to/from container (tar over the API, no CLI).
  • Docker Compose: local (host CLI), containerised (docker:cli ambassador), and auto client modes; per-service wait + TCP probes.
  • Ryuk: crash-safe reaping via the standard testcontainers/ryuk sidecar.
  • Transports: Windows named pipe (message-mode half-close), unix socket, TCP, TLS (client certs; end-to-end TLS against a remote daemon is the main unverified gap).

Platforms & CI

Green on Windows (named pipe, MSVC) and Linux (unix socket, gcc): ~300 unit tests + ~65 integration tests against a real daemon. CI runs the full integration suite on Linux and the unit suite on Windows for every push.

Status

Alpha: the core is feature-complete, but the API may still change. Known limits per subsystem are documented in docs/06-feature-notes.md; the actionable backlog lives in TODO.md.

Licensed under MIT or Apache-2.0, at your option.