Struct libcnb_test::ContainerConfig
source · pub struct ContainerConfig { /* private fields */ }
Expand description
Config used when starting a container.
By default the container will run the CNB default process-type, however this can be
overridden using ContainerConfig::entrypoint
and ContainerConfig::command
.
See: CNB App Developer Guide: Run a multi-process app
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new()
.env("PORT", "12345")
.expose_port(12345),
|container| {
// ...
},
);
},
);
Implementations§
source§impl ContainerConfig
impl ContainerConfig
sourcepub fn new() -> Self
pub fn new() -> Self
Creates an empty ContainerConfig
instance.
By default the container will run the CNB default process-type, however this can be
overridden using ContainerConfig::entrypoint
and ContainerConfig::command
.
See: CNB App Developer Guide: Run a multi-process app
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new()
.env("PORT", "12345")
.expose_port(12345),
|container| {
// ...
},
);
},
);
sourcepub fn entrypoint(&mut self, entrypoint: impl Into<String>) -> &mut Self
pub fn entrypoint(&mut self, entrypoint: impl Into<String>) -> &mut Self
Override the image’s entrypoint
(which is the CNB default process-type).
See: CNB App Developer Guide: Run a multi-process app
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(ContainerConfig::new().entrypoint("worker"), |container| {
// ...
});
},
);
sourcepub fn command<I: IntoIterator<Item = S>, S: Into<String>>(
&mut self,
command: I,
) -> &mut Self
pub fn command<I: IntoIterator<Item = S>, S: Into<String>>( &mut self, command: I, ) -> &mut Self
Set the container’s command
(CNB images have no default command).
See: CNB App Developer Guide: Run a multi-process app
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new().command(["--additional-arg1", "--additional-arg2"]),
|container| {
// ...
},
);
},
);
sourcepub fn expose_port(&mut self, port: u16) -> &mut Self
pub fn expose_port(&mut self, port: u16) -> &mut Self
Exposes a given port of the container to the host machine.
The given port is mapped to a random port on the host machine. Use
crate::ContainerContext::address_for_port
to obtain the local port for a mapped port.
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new()
.env("PORT", "12345")
.expose_port(12345),
|container| {
let address_on_host = container.address_for_port(12345);
// ...
},
);
},
);
sourcepub fn env(
&mut self,
key: impl Into<String>,
value: impl Into<String>,
) -> &mut Self
pub fn env( &mut self, key: impl Into<String>, value: impl Into<String>, ) -> &mut Self
Inserts or updates an environment variable mapping for the container.
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new()
.env("PORT", "5678")
.env("DEBUG", "true"),
|container| {
// ...
},
);
},
);
sourcepub fn envs<K: Into<String>, V: Into<String>, I: IntoIterator<Item = (K, V)>>(
&mut self,
envs: I,
) -> &mut Self
pub fn envs<K: Into<String>, V: Into<String>, I: IntoIterator<Item = (K, V)>>( &mut self, envs: I, ) -> &mut Self
Adds or updates multiple environment variable mappings for the container.
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new().envs([("PORT", "5678"), ("DEBUG", "true")]),
|container| {
// ...
},
);
},
);
Trait Implementations§
source§impl Clone for ContainerConfig
impl Clone for ContainerConfig
source§fn clone(&self) -> ContainerConfig
fn clone(&self) -> ContainerConfig
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Default for ContainerConfig
impl Default for ContainerConfig
source§fn default() -> ContainerConfig
fn default() -> ContainerConfig
Auto Trait Implementations§
impl Freeze for ContainerConfig
impl RefUnwindSafe for ContainerConfig
impl Send for ContainerConfig
impl Sync for ContainerConfig
impl Unpin for ContainerConfig
impl UnwindSafe for ContainerConfig
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more