pub struct Dockerfile {
pub global_args: Vec<ArgInstruction>,
pub stages: Vec<Stage>,
}Expand description
A parsed Dockerfile
Fields§
§global_args: Vec<ArgInstruction>Global ARG instructions that appear before the first FROM
stages: Vec<Stage>Build stages
Implementations§
Source§impl Dockerfile
impl Dockerfile
Sourcepub fn resolve_from_args(&mut self, build_args: &HashMap<String, String>)
pub fn resolve_from_args(&mut self, build_args: &HashMap<String, String>)
Expand pre-FROM ARGs in every stage’s FROM target.
Docker semantics: only ARGs declared BEFORE the first FROM
participate in FROM-line expansion (FROM ${BASE_IMAGE} /
FROM img:${TAG:-latest}), with --build-arg values overriding
their defaults. The parser can’t do this (it has no build args), so
targets containing $ end up classified as DockerfileFromTarget::Stage
— and struct-consuming backends then fail with Stage '${BASE_IMAGE}' not found. Call this with the effective build args before handing
the Dockerfile to a backend.
Expanded targets are re-classified: scratch, a previously declared
stage name, an OCI image reference, or (still) a stage string. A
target that expands to an empty string is left untouched so the
eventual error names the unexpanded variable instead of a blank.
Sourcepub fn parse(content: &str) -> Result<Self>
pub fn parse(content: &str) -> Result<Self>
Parse a Dockerfile from a string
§Errors
Returns an error if the Dockerfile content is malformed or contains invalid instructions.
Sourcepub fn from_file(path: impl AsRef<Path>) -> Result<Self>
pub fn from_file(path: impl AsRef<Path>) -> Result<Self>
Parse a Dockerfile from a file
§Errors
Returns an error if the file cannot be read or the Dockerfile is malformed.
Sourcepub fn final_stage(&self) -> Option<&Stage>
pub fn final_stage(&self) -> Option<&Stage>
Get the final stage (last one in the Dockerfile)
Sourcepub fn stage_names(&self) -> Vec<String>
pub fn stage_names(&self) -> Vec<String>
Get all stage names/identifiers
Sourcepub fn stage_count(&self) -> usize
pub fn stage_count(&self) -> usize
Returns the number of stages
Trait Implementations§
Source§impl Clone for Dockerfile
impl Clone for Dockerfile
Source§fn clone(&self) -> Dockerfile
fn clone(&self) -> Dockerfile
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Dockerfile
impl Debug for Dockerfile
Source§impl<'de> Deserialize<'de> for Dockerfile
impl<'de> Deserialize<'de> for Dockerfile
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>,
Auto Trait Implementations§
impl Freeze for Dockerfile
impl RefUnwindSafe for Dockerfile
impl Send for Dockerfile
impl Sync for Dockerfile
impl Unpin for Dockerfile
impl UnsafeUnpin for Dockerfile
impl UnwindSafe for Dockerfile
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> 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> FromBase64 for Twhere
T: for<'de> Deserialize<'de>,
impl<T> FromBase64 for Twhere
T: for<'de> Deserialize<'de>,
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> 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 moreSource§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