Dockerfile builders¶
See Build a Docker image for setup, supported instructions, and differences from Docker. See Advanced usage for callbacks, cache lifetimes, and manual assembly. See Customize the SDK for parser and factory hooks.
Dockerfile parser and keyword interpreters.
Each Dockerfile directive is a DockerKeyword subclass living in its own module. parse_dockerfile returns a list of directives ready to be executed against a BuildContext/AsyncBuildContext.
- class contree_sdk.docker.AddKeyword(sources=<factory>, dest='', chown='', chmod='', from_stage='')[source]¶
-
NAME:
ClassVar[str] = 'ADD'¶
-
chmod:
str= ''¶
-
chown:
str= ''¶
-
dest:
str= ''¶
-
from_stage:
str= ''¶
-
sources:
tuple[str,...]¶
-
NAME:
- class contree_sdk.docker.ArgKeyword(name='', default=None)[source]¶
-
NAME:
ClassVar[str] = 'ARG'¶
-
default:
str|None= None¶
-
name:
str= ''¶
-
NAME:
- class contree_sdk.docker.AsyncBuildContext(client, store, local, http_fetch_async=<function http_fetch_async>, session_factory=<class 'contree_sdk.session.asyncio.ContreeAsyncSession'>, directive_executor=None, session_id='', session=None, build_args=<factory>, declared_args=<factory>, arg_defaults=<factory>, env=<factory>, workdir='/', user='', parent_hash='', stages=<factory>, stage_images=<factory>, current_stage_alias='', pending=<factory>, no_cache=False, timeout=600, last_cache_hit=False, on_event=None, progress=<factory>, upload_cache_ttl=7776000, upload_concurrency=4)[source]¶
-
- async commit_layer(branch_name, image_uuid, *, kind, title, operation_uuid='')[source]¶
- Return type:
None
- create_session(client, *, session_id, store, image, node_id=None)[source]¶
Return a session from the configured factory.
- Return type:
- Returns:
The configured session implementation.
-
current_stage_alias:
str= ''¶
-
directive_executor:
Callable[[DockerKeyword,AsyncBuildContext],Awaitable[None]] |None= None¶
- async emit_event(event_type, *, data=b'', error=None)[source]¶
Deliver one notification through the configured build callback.
- Return type:
None
- async execute_directive(directive)[source]¶
Run a nested directive through the builder’s policy when configured.
- Return type:
None
- property file_sources: AsyncFileSources¶
- async http_fetch_async(method, headers)¶
- Return type:
tuple[int,Iterable[tuple[str,str]],AsyncIterable[bytes]]
-
last_cache_hit:
bool= False¶
- property last_image: str¶
-
no_cache:
bool= False¶
-
on_event:
Callable[[BuildEvent],object] |None= None¶
-
parent_hash:
str= ''¶
- pending_files_payload()[source]¶
- Return type:
dict[str,str|Path|bytes|UploadFileSpec]
- async run_operation(request, *, branch)[source]¶
Stream and commit one RUN operation through the session’s public lifecycle.
- Return type:
InstanceResult- Returns:
The terminal process result, including nonzero exits.
- Raises:
DockerBuildError – No FROM session is active.
-
session:
ContreeAsyncSession|None= None¶
- session_factory¶
alias of
ContreeAsyncSession
-
session_id:
str= ''¶
-
timeout:
int= 600¶
-
upload_cache_ttl:
float= 7776000¶
-
upload_concurrency:
int= 4¶
-
user:
str= ''¶
-
workdir:
str= '/'¶
-
client:
ContreeAsyncClient¶
-
store:
AsyncStore¶
-
local:
LocalContext¶
-
build_args:
dict[str,str]¶
-
declared_args:
set[str]¶
-
arg_defaults:
dict[str,str]¶
-
env:
dict[str,str]¶
-
stages:
dict[str,str]¶
-
stage_images:
list[str]¶
-
pending:
list[PendingFile]¶
-
progress:
BuildProgress¶
- class contree_sdk.docker.BuildContext(client, store, local, http_fetch=<function http_fetch>, session_factory=<class 'contree_sdk.session.sync.ContreeSession'>, directive_executor=None, session_id='', session=None, build_args=<factory>, declared_args=<factory>, arg_defaults=<factory>, env=<factory>, workdir='/', user='', parent_hash='', stages=<factory>, stage_images=<factory>, current_stage_alias='', pending=<factory>, no_cache=False, timeout=600, last_cache_hit=False, on_event=None, progress=<factory>, upload_cache_ttl=7776000, upload_concurrency=4)[source]¶
-
- create_session(client, *, session_id, store, image, node_id=None)[source]¶
Return a session from the configured factory.
- Return type:
- Returns:
The configured session implementation.
-
current_stage_alias:
str= ''¶
-
directive_executor:
Callable[[DockerKeyword,BuildContext],None] |None= None¶
- emit_event(event_type, *, data=b'', error=None)[source]¶
Deliver one notification through the configured build callback.
- Return type:
None
- execute_directive(directive)[source]¶
Run a nested directive through the builder’s policy when configured.
- Return type:
None
- property file_sources: SyncFileSources¶
- http_fetch(method, headers)¶
- Return type:
tuple[int,Iterable[tuple[str,str]],Iterable[bytes]]
-
last_cache_hit:
bool= False¶
- property last_image: str¶
-
no_cache:
bool= False¶
-
on_event:
Callable[[BuildEvent],None] |None= None¶
-
parent_hash:
str= ''¶
- pending_files_payload()[source]¶
- Return type:
dict[str,str|Path|bytes|UploadFileSpec]
- run_operation(request, *, branch)[source]¶
Stream and commit one RUN operation through the session’s public lifecycle.
- Return type:
InstanceResult- Returns:
The terminal process result, including nonzero exits.
- Raises:
DockerBuildError – No FROM session is active.
-
session:
ContreeSession|None= None¶
- session_factory¶
alias of
ContreeSession
-
session_id:
str= ''¶
-
timeout:
int= 600¶
-
upload_cache_ttl:
float= 7776000¶
-
upload_concurrency:
int= 4¶
-
user:
str= ''¶
-
workdir:
str= '/'¶
-
client:
ContreeSyncClient¶
-
local:
LocalContext¶
-
build_args:
dict[str,str]¶
-
declared_args:
set[str]¶
-
arg_defaults:
dict[str,str]¶
-
env:
dict[str,str]¶
-
stages:
dict[str,str]¶
-
stage_images:
list[str]¶
-
pending:
list[PendingFile]¶
-
progress:
BuildProgress¶
- class contree_sdk.docker.BuildEvent(*, type, step, operation_uuid=None, image_before=None, image_after=None, duration=0.0, data=b'', result=None, error=None)[source]¶
A build notification with raw output bytes and the current operation identity.
result is available after the operation finishes, including nonzero exits. Errors retain their original exception object. Output is never decoded or formatted.
-
data:
bytes= b''¶
-
duration:
float= 0.0¶
-
error:
BaseException|None= None¶
-
image_after:
str|None= None¶
-
image_before:
str|None= None¶
-
operation_uuid:
str|None= None¶
-
result:
InstanceResult|None= None¶
-
type:
Literal['step_started','operation_started','stdout','stderr','cache_hit','step_completed','step_failed']¶
-
data:
- class contree_sdk.docker.BuildRequest(*, context_dir, dockerfile_path, session_id, build_args=<factory>, no_cache=False, timeout=600)[source]¶
Resolved local inputs and options for one build context.
-
no_cache:
bool= False¶
-
timeout:
int= 600¶
-
context_dir:
Path¶
-
dockerfile_path:
Path¶
-
session_id:
str¶
-
build_args:
dict[str,str]¶
-
no_cache:
- class contree_sdk.docker.BuildStep(id, keyword, index=None, parent_id=None)[source]¶
One directive execution; IDs start at zero within each build.
index is the parsed Dockerfile position, or None for a synthetic step. parent_id identifies the enclosing directive for nested execution.
-
index:
int|None= None¶
-
parent_id:
int|None= None¶
-
id:
int¶
-
keyword:
str¶
-
index:
- class contree_sdk.docker.BuildStepEvent(index, keyword, cache_hit, image_before, image_after, duration, error=None)[source]¶
Reported to on_step around each directive’s execute()/execute_async() call.
-
error:
BaseException|None= None¶
-
index:
int¶
-
keyword:
str¶
-
cache_hit:
bool¶
-
image_before:
str|None¶
-
image_after:
str|None¶
-
duration:
float¶
-
error:
- class contree_sdk.docker.ContreeAsyncDockerBuilder(client, *, store=None, http_fetch_async=None, parser=None, session_factory=None)[source]¶
Build a Dockerfile from context.
Applies each directive against a content-addressed layer cache keyed by the build’s session.
- async build(context, *, dockerfile=None, tag=None, build_args=None, no_cache=False, timeout=600, session_id=None, on_event=None, on_step=None)[source]¶
- Return type:
str
- context_class¶
alias of
AsyncBuildContext
- async create_context(request)[source]¶
Construct per-build state using the public context and session factories.
- Return type:
- Returns:
A context owned by this build invocation.
- async execute_directive(directive, context)[source]¶
Execute one directive. Override for policy checks or instrumentation.
- Return type:
None
- async finalize(context)[source]¶
Commit pending file attachments through the same directive execution hook.
- Return type:
None
- parse(text)[source]¶
Return build directives through the configured parser.
- Return type:
list[DockerKeyword]- Returns:
The parsed directives in source order.
- async run_step(directive, context, *, index=None)[source]¶
Report one directive execution, including nested and synthetic steps.
- Return type:
None
- property session: ContreeAsyncSession | None¶
- class contree_sdk.docker.ContreeDockerBuilder(client, *, store=None, http_fetch=None, parser=None, session_factory=None)[source]¶
Build a Dockerfile from context.
Applies each directive against a content-addressed layer cache keyed by the build’s session.
- build(context, *, dockerfile=None, tag=None, build_args=None, no_cache=False, timeout=600, session_id=None, on_event=None, on_step=None)[source]¶
- Return type:
str
- context_class¶
alias of
BuildContext
- create_context(request)[source]¶
Construct per-build state using the public context and session factories.
- Return type:
- Returns:
A context owned by this build invocation.
- execute_directive(directive, context)[source]¶
Execute one directive. Override for policy checks or instrumentation.
- Return type:
None
- finalize(context)[source]¶
Commit pending file attachments through the same directive execution hook.
- Return type:
None
- parse(text)[source]¶
Return build directives through the configured parser.
- Return type:
list[DockerKeyword]- Returns:
The parsed directives in source order.
- run_step(directive, context, *, index=None)[source]¶
Report one directive execution, including nested and synthetic steps.
- Return type:
None
- property session: ContreeSession | None¶
- class contree_sdk.docker.CopyKeyword(sources=<factory>, dest='', chown='', chmod='', from_stage='')[source]¶
-
NAME:
ClassVar[str] = 'COPY'¶
-
chmod:
str= ''¶
-
chown:
str= ''¶
-
dest:
str= ''¶
-
from_stage:
str= ''¶
-
sources:
tuple[str,...]¶
-
NAME:
- class contree_sdk.docker.DockerKeyword[source]¶
Base class. Subclasses implement parse, serialize, execute.
-
NAME:
ClassVar[str] = ''¶
-
NAME:
- class contree_sdk.docker.DockerfileParser(*, keywords=None, skipped=None)[source]¶
A per-instance directive registry. Subclass or register custom DockerKeyword classes.
- parse(text)[source]¶
Return directives using this parser’s registry.
- Return type:
list[DockerKeyword]- Returns:
The parsed directives in source order.
- Raises:
ValueError – A directive is unknown or has invalid arguments.
- class contree_sdk.docker.DockerignoreRule(negate, regex, raw)[source]¶
One compiled .dockerignore line.
-
negate:
bool¶
-
regex:
Pattern[str]¶
-
raw:
str¶
-
negate:
- class contree_sdk.docker.EnvKeyword(pairs=<factory>)[source]¶
-
NAME:
ClassVar[str] = 'ENV'¶
-
pairs:
tuple[tuple[str,str],...]¶
-
NAME:
- class contree_sdk.docker.FromKeyword(image_ref='', alias='')[source]¶
-
NAME:
ClassVar[str] = 'FROM'¶
-
alias:
str= ''¶
-
image_ref:
str= ''¶
-
NAME:
- class contree_sdk.docker.LocalContext(root, dockerignore=<factory>)[source]¶
Read-only handle for the local build context directory.
-
root:
Path¶
-
dockerignore:
tuple[DockerignoreRule,...]¶
-
root:
- class contree_sdk.docker.PendingFile(instance_path, file_uuid, sha256, uid, gid, mode)[source]¶
-
instance_path:
str¶
-
file_uuid:
str¶
-
sha256:
str¶
-
uid:
int¶
-
gid:
int¶
-
mode:
str¶
-
instance_path:
- class contree_sdk.docker.RunKeyword(parts=<factory>, shell_form=True)[source]¶
-
NAME:
ClassVar[str] = 'RUN'¶
- build_request(ctx)[source]¶
Prepare the command for the context’s operation execution hook.
- Return type:
- Returns:
A non-disposable request with the current build state and attachments.
-
shell_form:
bool= True¶
-
parts:
tuple[str,...]¶
-
NAME:
- class contree_sdk.docker.SkippedKeyword(name='', raw='')[source]¶
- NAME: ClassVar[str] = ''¶
- name: str = ''¶
- classmethod parse(args_text)¶
- Return type:
- raw: str = ''¶
- class contree_sdk.docker.UserKeyword(spec='')[source]¶
-
NAME:
ClassVar[str] = 'USER'¶
-
spec:
str= ''¶
-
NAME:
- class contree_sdk.docker.WorkdirKeyword(path='')[source]¶
-
NAME:
ClassVar[str] = 'WORKDIR'¶
-
path:
str= ''¶
-
NAME:
- contree_sdk.docker.parse_dockerfile(text)[source]¶
- Return type:
list[DockerKeyword]
- contree_sdk.docker.parse_dockerignore(context_dir)[source]¶
- Return type:
tuple[DockerignoreRule,...]