Principle:Bentoml BentoML Build Configuration
| Sources | Domains | Last Updated |
|---|---|---|
| BentoML, BentoML Build Options | ML_Serving, Build_System, Configuration | 2026-02-13 15:00 GMT |
Overview
Configuring how a BentoML service is packaged into a distributable artifact by separating packaging concerns from service code.
Description
Build configuration separates packaging concerns (what files to include, what dependencies to install, what Docker options to use) from the service code itself. This separation enables reproducible builds across environments via a declarative bentofile.yaml or a programmatic configuration dictionary. The build configuration captures all information needed to produce a self-contained, deployable Bento artifact.
Usage
Define a bentofile.yaml in the project root or pass a configuration dictionary programmatically when invoking the build API. The configuration specifies the service entry point, file inclusion/exclusion patterns, Docker options, Python/Conda dependencies, model references, and environment variables.
Theoretical Basis
The principle of Separation of Concerns applied to ML packaging. By extracting build configuration from service logic:
- Service code focuses on inference logic, model loading, and API definitions
- Build configuration focuses on environment setup, dependency declaration, and artifact packaging
- Deployment configuration remains independent, consuming the built artifact
This mirrors patterns in software engineering such as:
- Maven POM / Gradle build files -- declarative build specification separate from source code
- Dockerfile / docker-compose.yml -- container specification decoupled from application code
- pyproject.toml / setup.cfg -- Python packaging metadata separate from library code
The declarative YAML format (bentofile.yaml) provides a human-readable, version-controllable specification that can be validated, linted, and processed by CI/CD pipelines. The programmatic API (BentoBuildConfig) enables dynamic configuration generation and testing.
Key configuration dimensions include:
- File selection -- include/exclude globs controlling which project files enter the Bento
- Docker options -- base image, Dockerfile template, system packages, environment variables
- Python options -- pip packages, requirements files, index URLs, trusted hosts
- Conda options -- Conda environment specification for complex native dependencies
- Model references -- explicit model declarations for dependency tracking