testcontainers-cpp 0.2.0
Native C++20 Testcontainers over the Docker Engine API
Loading...
Searching...
No Matches
testcontainers::CreateContainerSpec Struct Reference

The flat create-body DTO for POST /containers/create, shared between the builder layer (ContainerRequest renders into it) and the client — typed fields for every option the library surfaces, translated into the daemon's JSON in one place. More...

#include <testcontainers/docker/ContainerSpec.hpp>

Public Attributes

std::string image
 "alpine:3.20"
std::vector< std::string > cmd
 command / args
std::vector< std::string > entrypoint
 Entrypoint override.
std::vector< std::string > env
 "KEY=VALUE" entries
std::vector< std::string > exposed_ports
 "6379/tcp"
std::vector< std::string > published_ports
 Ports to publish to daemon-assigned ephemeral host ports (HostConfig.PortBindings with an empty HostPort).
std::vector< std::pair< std::string, std::string > > labels
 container labels
std::optional< std::string > name
 container name (?name=)
std::optional< std::string > platform
 "<os>/<arch>" (?platform=)
std::optional< std::string > network
 HostConfig.NetworkMode.
std::vector< std::string > network_aliases
 DNS aliases on network (NetworkingConfig).
std::optional< std::string > static_ipv4
 Fixed IPv4 address on network (NetworkingConfig ... IPAMConfig.IPv4Address).
std::optional< std::string > working_dir
 WorkingDir.
std::optional< std::string > user
 User.
bool tty = false
 Tty (allocate a pseudo-TTY; raw/unframed log stream).
bool publish_all_ports = false
 HostConfig.PublishAllPorts.
bool privileged = false
 HostConfig.Privileged.
bool auto_remove = false
 HostConfig.AutoRemove.
std::vector< Mountmounts
 HostConfig.Mounts.
std::optional< Healthcheckhealthcheck
 Healthcheck (create-body).
std::optional< std::int64_t > memory_bytes
 HostConfig.Memory (hard limit, bytes).
std::optional< std::int64_t > shm_size_bytes
 HostConfig.ShmSize (bytes).
std::optional< std::int64_t > nano_cpus
 HostConfig.NanoCpus (1e9 = one CPU).
std::optional< std::string > cpuset_cpus
 HostConfig.CpusetCpus ("0-2,7").
std::optional< std::int64_t > pids_limit
 HostConfig.PidsLimit (-1 = unlimited).
std::vector< Ulimitulimits
 HostConfig.Ulimits.
std::vector< std::string > cap_add
 HostConfig.CapAdd.
std::vector< std::string > cap_drop
 HostConfig.CapDrop.
std::vector< std::string > extra_hosts
 HostConfig.ExtraHosts ("host:ip").
std::optional< RestartPolicyrestart_policy
 HostConfig.RestartPolicy.
std::vector< std::string > dns_servers
 HostConfig.Dns.
std::vector< std::string > dns_search
 HostConfig.DnsSearch (search domains).
std::vector< std::string > dns_options
 HostConfig.DnsOptions (resolver options).
std::vector< std::pair< std::string, std::string > > sysctls
 HostConfig.Sysctls.
std::vector< Devicedevices
 HostConfig.Devices.
std::optional< std::string > isolation
 HostConfig.Isolation ("process"/"hyperv"; Windows daemons).
std::string create_body_patch
 Raw JSON object deep-merged into the create body (escape hatch); empty = none.

Detailed Description

The flat create-body DTO for POST /containers/create, shared between the builder layer (ContainerRequest renders into it) and the client — typed fields for every option the library surfaces, translated into the daemon's JSON in one place.

Member Data Documentation

◆ image

std::string testcontainers::CreateContainerSpec::image

"alpine:3.20"

◆ cmd

std::vector<std::string> testcontainers::CreateContainerSpec::cmd

command / args

◆ entrypoint

std::vector<std::string> testcontainers::CreateContainerSpec::entrypoint

Entrypoint override.

◆ env

std::vector<std::string> testcontainers::CreateContainerSpec::env

"KEY=VALUE" entries

◆ exposed_ports

std::vector<std::string> testcontainers::CreateContainerSpec::exposed_ports

"6379/tcp"

◆ published_ports

std::vector<std::string> testcontainers::CreateContainerSpec::published_ports

Ports to publish to daemon-assigned ephemeral host ports (HostConfig.PortBindings with an empty HostPort).

Publishes EXACTLY these — unlike publish_all_ports, which also publishes every port the image EXPOSEs (surprise bindings: an image exposing 22 collides with the host's sshd).

◆ labels

std::vector<std::pair<std::string, std::string> > testcontainers::CreateContainerSpec::labels

container labels

◆ name

std::optional<std::string> testcontainers::CreateContainerSpec::name

container name (?name=)

◆ platform

std::optional<std::string> testcontainers::CreateContainerSpec::platform

"<os>/<arch>" (?platform=)

◆ network

std::optional<std::string> testcontainers::CreateContainerSpec::network

HostConfig.NetworkMode.

◆ network_aliases

std::vector<std::string> testcontainers::CreateContainerSpec::network_aliases

DNS aliases on network (NetworkingConfig).

◆ static_ipv4

std::optional<std::string> testcontainers::CreateContainerSpec::static_ipv4

Fixed IPv4 address on network (NetworkingConfig ... IPAMConfig.IPv4Address).

◆ working_dir

std::optional<std::string> testcontainers::CreateContainerSpec::working_dir

WorkingDir.

◆ user

std::optional<std::string> testcontainers::CreateContainerSpec::user

User.

◆ tty

bool testcontainers::CreateContainerSpec::tty = false

Tty (allocate a pseudo-TTY; raw/unframed log stream).

◆ publish_all_ports

bool testcontainers::CreateContainerSpec::publish_all_ports = false

HostConfig.PublishAllPorts.

◆ privileged

bool testcontainers::CreateContainerSpec::privileged = false

HostConfig.Privileged.

◆ auto_remove

bool testcontainers::CreateContainerSpec::auto_remove = false

HostConfig.AutoRemove.

◆ mounts

std::vector<Mount> testcontainers::CreateContainerSpec::mounts

HostConfig.Mounts.

◆ healthcheck

std::optional<Healthcheck> testcontainers::CreateContainerSpec::healthcheck

Healthcheck (create-body).

◆ memory_bytes

std::optional<std::int64_t> testcontainers::CreateContainerSpec::memory_bytes

HostConfig.Memory (hard limit, bytes).

◆ shm_size_bytes

std::optional<std::int64_t> testcontainers::CreateContainerSpec::shm_size_bytes

HostConfig.ShmSize (bytes).

◆ nano_cpus

std::optional<std::int64_t> testcontainers::CreateContainerSpec::nano_cpus

HostConfig.NanoCpus (1e9 = one CPU).

◆ cpuset_cpus

std::optional<std::string> testcontainers::CreateContainerSpec::cpuset_cpus

HostConfig.CpusetCpus ("0-2,7").

◆ pids_limit

std::optional<std::int64_t> testcontainers::CreateContainerSpec::pids_limit

HostConfig.PidsLimit (-1 = unlimited).

◆ ulimits

std::vector<Ulimit> testcontainers::CreateContainerSpec::ulimits

HostConfig.Ulimits.

◆ cap_add

std::vector<std::string> testcontainers::CreateContainerSpec::cap_add

HostConfig.CapAdd.

◆ cap_drop

std::vector<std::string> testcontainers::CreateContainerSpec::cap_drop

HostConfig.CapDrop.

◆ extra_hosts

std::vector<std::string> testcontainers::CreateContainerSpec::extra_hosts

HostConfig.ExtraHosts ("host:ip").

◆ restart_policy

std::optional<RestartPolicy> testcontainers::CreateContainerSpec::restart_policy

HostConfig.RestartPolicy.

◆ dns_servers

std::vector<std::string> testcontainers::CreateContainerSpec::dns_servers

HostConfig.Dns.

◆ dns_search

std::vector<std::string> testcontainers::CreateContainerSpec::dns_search

HostConfig.DnsSearch (search domains).

◆ dns_options

std::vector<std::string> testcontainers::CreateContainerSpec::dns_options

HostConfig.DnsOptions (resolver options).

◆ sysctls

std::vector<std::pair<std::string, std::string> > testcontainers::CreateContainerSpec::sysctls

HostConfig.Sysctls.

◆ devices

std::vector<Device> testcontainers::CreateContainerSpec::devices

HostConfig.Devices.

◆ isolation

std::optional<std::string> testcontainers::CreateContainerSpec::isolation

HostConfig.Isolation ("process"/"hyperv"; Windows daemons).

◆ create_body_patch

std::string testcontainers::CreateContainerSpec::create_body_patch

Raw JSON object deep-merged into the create body (escape hatch); empty = none.