# docker_dsl > Imperative context-manager DSL for authoring multi-stage Dockerfiles. ## Docs ### API Reference #### Entry points > Declare config and render a recipe into a Dockerfile. - [Dockerfile](https://yasyf.github.io/docker-dsl/reference/Dockerfile.html): Renders a recipe module into Dockerfile text - [BuildContext](https://yasyf.github.io/docker-dsl/reference/BuildContext.html): Recipe-facing handle for config fields, exported as `context` - [rendering](https://yasyf.github.io/docker-dsl/reference/rendering.html): Report whether a render pass is in progress #### Stage authoring > Declare stages and emit instructions. - [Stage](https://yasyf.github.io/docker-dsl/reference/Stage.html): A build stage — one `FROM` and the instructions that follow it - [MountScope](https://yasyf.github.io/docker-dsl/reference/MountScope.html): A `with` block that applies a mount to the `RUN` commands inside it - [EnvScope](https://yasyf.github.io/docker-dsl/reference/EnvScope.html): A `with` block that confines env variables to the `RUN` commands inside #### The run builder > Accumulate shell commands into one RUN instruction. - [RunBuilder](https://yasyf.github.io/docker-dsl/reference/RunBuilder.html): Accumulates shell commands into a single `RUN` instruction - [AptMixin](https://yasyf.github.io/docker-dsl/reference/AptMixin.html): AptMixin(*, apt_updated: 'bool' = False, apt_dirty: 'bool' = True) - [RedirectableCmd](https://yasyf.github.io/docker-dsl/reference/RedirectableCmd.html): A pending `echo` awaiting a redirect target - [CdScope](https://yasyf.github.io/docker-dsl/reference/CdScope.html): A `cd` that optionally restores the previous directory - [CmdInvoker](https://yasyf.github.io/docker-dsl/reference/CmdInvoker.html): A bound shell binary, produced by `RunBuilder`'s attribute dispatch #### Introspection > Query the active build during a render pass. - [current_stage](https://yasyf.github.io/docker-dsl/reference/current_stage.html): Return the stage of the innermost open `with Stage(...)` block