pub struct ImageSpec {
pub base: Option<BaseImage>,
pub oci: Option<OciImage>,
pub build_steps: Vec<ImageBuildStep>,
pub env: HashMap<String, String>,
pub architecture: ImageArchitecture,
pub python_version: String,
pub filesystem: ImageFilesystem,
}Expand description
A Sailbox image: a base or registry image plus ordered build steps.
Fields§
§base: Option<BaseImage>Base image to build on; mutually exclusive with oci.
oci: Option<OciImage>Your own image used as the root filesystem; mutually exclusive with
base. Names a Debian- or Ubuntu-based image on a supported public
registry (docker.io, ghcr.io, public.ecr.aws, or quay.io) by
tag, digest, or bare name (a bare name means the latest tag). Once
Sail has a built image for a tag, later builds keep using that image
after the tag moves. If no image was ever built from a lookup, Sail
may look the tag up again later. A forced build
(BuildMode::ForceBuild) looks the
tag up again and builds the version it points at now. A digest names
exactly one image, so it never moves.
build_steps: Vec<ImageBuildStep>Ordered build steps applied on top of the image source.
env: HashMap<String, String>Environment variables baked into the image.
architecture: ImageArchitectureTarget CPU architecture. Unset means amd64 with base, and with oci
means whichever architecture the registry image was built for (amd64
when it was built for both). Setting it with oci requires the image
to provide that architecture.
python_version: StringExact Python version to install as python3; empty uses the builder
default. Not accepted with oci: a registry image keeps its own
python3.
filesystem: ImageFilesystemWritable root filesystem; unspecified preserves the ext4 default.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ImageSpec
impl<'de> Deserialize<'de> for ImageSpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl StructuralPartialEq for ImageSpec
Auto Trait Implementations§
impl Freeze for ImageSpec
impl RefUnwindSafe for ImageSpec
impl Send for ImageSpec
impl Sync for ImageSpec
impl Unpin for ImageSpec
impl UnsafeUnpin for ImageSpec
impl UnwindSafe for ImageSpec
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request