Skip to main content

Container

Struct Container 

Source
pub struct Container {
Show 21 fields pub id: String, pub links: Vec<ResourceRef>, pub ports: Vec<ContainerPort>, pub public_endpoints: Vec<PublicEndpoint>, pub cluster: Option<String>, pub code: ContainerCode, pub cpu: ResourceSpec, pub memory: ResourceSpec, pub gpu: Option<ContainerGpuSpec>, pub ephemeral_storage: Option<String>, pub persistent_storage: Option<PersistentStorage>, pub replicas: Option<u32>, pub autoscaling: Option<ContainerAutoscaling>, pub stateful: bool, pub environment: HashMap<String, String>, pub pool: Option<String>, pub permissions: String, pub health_check: Option<HealthCheck>, pub command: Option<Vec<String>>, pub commands_enabled: bool, pub stop_grace_period_seconds: Option<u32>,
}
Expand description

Container resource for running long-running container workloads.

A Container defines a deployable unit that runs on a ComputeCluster. The managed container backend handles scheduling replicas across machines, autoscaling based on various metrics, and service discovery.

§Example

use alien_core::{Container, ContainerCode, ResourceSpec, ContainerAutoscaling, PublicEndpoint, ExposeProtocol};

let container = Container::new("api".to_string())
    .cluster("compute".to_string())
    .code(ContainerCode::Image {
        image: "myapp:latest".to_string(),
    })
    .cpu(ResourceSpec { min: "0.5".to_string(), desired: "1".to_string() })
    .memory(ResourceSpec { min: "512Mi".to_string(), desired: "1Gi".to_string() })
    .port(8080)
    .public_endpoint(PublicEndpoint {
        name: "api".to_string(),
        port: 8080,
        protocol: ExposeProtocol::Http,
        host_label: None,
        wildcard_subdomains: false,
    })
    .autoscaling(ContainerAutoscaling {
        min: 2,
        desired: 3,
        max: 10,
        target_cpu_percent: Some(70.0),
        target_memory_percent: None,
        target_http_in_flight_per_replica: Some(100),
        max_http_p95_latency_ms: None,
    })
    .permissions("container-execution".to_string())
    .build();

Fields§

§id: String

Unique identifier for the container. Must be DNS-compatible: lowercase alphanumeric with hyphens.

§links: Vec<ResourceRef>

Resource links (dependencies)

§ports: Vec<ContainerPort>

Internal container ports (at least one required).

§public_endpoints: Vec<PublicEndpoint>

Public endpoints exposed by the container.

§cluster: Option<String>

ComputeCluster resource ID that this container runs on. If None, will be auto-assigned by ComputeClusterMutation at deployment time.

§code: ContainerCode

Container code (image or source)

§cpu: ResourceSpec

CPU resource requirements

§memory: ResourceSpec

Memory resource requirements (must use Ki/Mi/Gi/Ti suffix)

§gpu: Option<ContainerGpuSpec>

GPU requirements (optional)

§ephemeral_storage: Option<String>

Ephemeral storage requirement (e.g., “10Gi”)

§persistent_storage: Option<PersistentStorage>

Persistent storage configuration (only for stateful containers)

§replicas: Option<u32>

Fixed replica count (for stateful containers or stateless without autoscaling)

§autoscaling: Option<ContainerAutoscaling>

Autoscaling configuration (only for stateless containers)

§stateful: bool

Whether container is stateful (gets stable ordinals, optional persistent volumes)

§environment: HashMap<String, String>

Environment variables

§pool: Option<String>

Capacity group to run on (must exist in the cluster) If not specified, containers are scheduled to any available group.

§permissions: String

Permission profile name

§health_check: Option<HealthCheck>

Health check configuration

§command: Option<Vec<String>>

Command to override image default

§commands_enabled: bool

Whether the container can receive remote commands via the Commands protocol. When enabled, an app-owned command receiver can lease pending commands for this Container and execute registered handlers.

§stop_grace_period_seconds: Option<u32>

Grace period in seconds for stopping replicas during updates, drains, and deletes.

When omitted, the runtime backend applies its default. Valid values are 1 second through 24 hours.

Implementations§

Source§

impl Container

Source

pub fn new(id: String) -> ContainerBuilder

Create an instance of Container using the builder syntax

Source§

impl Container

Source

pub const RESOURCE_TYPE: ResourceType

The resource type identifier for Container

Source

pub fn id(&self) -> &str

Returns the container’s unique identifier.

Source

pub fn get_permissions(&self) -> &str

Returns the permission profile name for this container.

Source

pub fn is_stateless(&self) -> bool

Returns true if this container is stateless (not stateful).

Trait Implementations§

Source§

impl Clone for Container

Source§

fn clone(&self) -> Container

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Container

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Container

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Container

Source§

fn eq(&self, other: &Container) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl ResourceDefinition for Container

Source§

fn get_resource_type(&self) -> ResourceType

Returns the resource type for this instance
Source§

fn id(&self) -> &str

Returns the unique identifier for this specific resource instance
Source§

fn get_dependencies(&self) -> Vec<ResourceRef>

Returns the list of other resources this resource depends on
Source§

fn get_permissions(&self) -> Option<&str>

Returns the permission profile name for this resource, if it has one. Read more
Source§

fn validate_update(&self, new_config: &dyn ResourceDefinition) -> Result<()>

Validates if an update from the current configuration to a new configuration is allowed
Source§

fn as_any(&self) -> &dyn Any

Provides access to the underlying concrete type for downcasting
Source§

fn as_any_mut(&mut self) -> &mut dyn Any

Provides mutable access to the underlying concrete type for downcasting
Source§

fn box_clone(&self) -> Box<dyn ResourceDefinition>

Creates a boxed clone of this resource definition
Source§

fn resource_eq(&self, other: &dyn ResourceDefinition) -> bool

For equality comparison between resource definitions
Source§

fn to_json_value(&self) -> Result<Value>

Serialize this resource to a JSON value (without the “type” tag - that’s added by Resource)
The links this definition owns, excluding triggers and ordering edges.
Mutable access, for dropping links to resources leaving the stack.
Source§

impl Serialize for Container

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Container

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more