dockerfile-parser-rs

Crates.iodockerfile-parser-rs
lib.rsdockerfile-parser-rs
version3.2.1
created_at2025-04-11 09:48:15.92975+00
updated_at2025-09-13 09:21:27.455418+00
descriptionThe ultimate Rust library for parsing, modifying, and generating Dockerfiles
homepage
repositoryhttps://github.com/slimreaper35/dockerfile-parser-rs
max_upload_size
id1629568
size83,798
Michal Ĺ oltis (slimreaper35)

documentation

https://docs.rs/dockerfile-parser-rs/latest/dockerfile_parser_rs

README

dockerfile-parser-rs

latest version total downloads license documentation

The ultimate Rust library for parsing, modifying, and generating Dockerfiles.

Instructions

  • ADD
  • ARG
  • CMD
  • COPY
  • ENTRYPOINT
  • ENV
  • EXPOSE
  • FROM
  • LABEL
  • RUN
  • SHELL
  • STOPSIGNAL
  • USER
  • VOLUME
  • WORKDIR

Note: In addition to the official Dockerfile instructions, empty lines and comments are supported too.

Usage

Library

Run the following Cargo command in your project directory:

cargo add dockerfile-parser-rs

Example:

use std::path::PathBuf;

use dockerfile_parser_rs::Dockerfile;
use dockerfile_parser_rs::Instruction;
use dockerfile_parser_rs::ParseResult;

fn main() -> ParseResult<()> {
    let path = PathBuf::from("./Dockerfile");
    let mut dockerfile = Dockerfile::from(path.clone())?;

    dockerfile.instructions.push(Instruction::User {
        user: String::from("1001"),
        group: None,
    });

    dockerfile.dump(path)?;
    Ok(())
}

Binary

Run the following Cargo command in your project directory:

cargo install dockerfile-parser-rs

Example:

# prints the Dockerfile as JSON
dockerfile-parser-rs ./Dockerfile

Limitations

Instruction case sensitivity

The instructions are not case-sensitive. However, the library works only with uppercase instructions for simplicity and consistency. Using uppercase instructions is also a recommended convention in Dockerfile format documentation.

Instruction arguments ordering

Options for all instructions will be sorted in alphabetical order. This is done to ensure deterministic output when dumping a Dockerfile. The same applies to the ARG, ENV, and LABEL instructions when they have multiple key-value pairs defined on one line.

Here-documents (heredocs)

Here-documents allow redirection of subsequent Dockerfile lines to the input of RUN or COPY commands. If such a command contains a here-document, the Dockerfile considers the next lines until the line only containing a here-doc delimiter as part of the same command.

The here-documents syntax is only supported for the RUN instruction and only with the EOF delimiter. Make sure that here-documents are always terminated with an EOF character on a new line.

Commit count: 90

cargo fmt