# DockerfileStage

- Kind: `class`
- Package: [Aspire.Hosting](/reference/api/csharp/aspire.hosting.md)
- Version: `13.3.0`
- Namespace: `Aspire.Hosting.ApplicationModel.Docker`
- Target framework: `net8.0`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/Docker/DockerfileStage.cs)
- Inherits: [DockerfileStatement](/reference/api/csharp/aspire.hosting/dockerfilestatement.md)

Represents a stage within a multi-stage Dockerfile.

## Definition

```csharp
namespace Aspire.Hosting.ApplicationModel.Docker;

public class DockerfileStage
    : Aspire.Hosting.ApplicationModel.Docker.DockerfileStatement
{
    // ...
}
```

## ATS metadata

### ATS export

- Type ID: `Aspire.Hosting/DockerfileStage`

## Constructors

- [DockerfileStage(string?, string)](/reference/api/csharp/aspire.hosting/dockerfilestage/constructors.md#constructor-string-string) -- Initializes a new instance of the [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) class.

## Properties

- [StageName](/reference/api/csharp/aspire.hosting/dockerfilestage/properties.md#stagename) : `string?` `get` -- Gets the name of the stage.
- [Statements](/reference/api/csharp/aspire.hosting/dockerfilestage/properties.md#statements) : [IList<DockerfileStatement>](/reference/api/csharp/aspire.hosting/dockerfilestatement.md) `get` -- Gets the statements for this stage.

## Methods

- [Arg(string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#arg-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds an ARG statement to define a build-time variable.
- [Arg(string, string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#arg-string-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds an ARG statement to define a build-time variable with a default value.
- [Cmd(string[])](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#cmd-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds a CMD statement to set the default command.
- [Comment(string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#comment-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds a comment to the Dockerfile. Multi-line comments are supported.
- [Copy(string, string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#copy-string-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds a COPY statement to copy files from the build context.
- [Copy(string, string, string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#copy-string-string-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds a COPY statement to copy files with ownership change.
- [CopyFrom(string, string, string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#copyfrom-string-string-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds a COPY statement to copy files from another stage.
- [CopyFrom(string, string, string, string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#copyfrom-string-string-string-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds a COPY statement to copy files from another stage with ownership change.
- [EmptyLine](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#emptyline) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds an empty line to the Dockerfile for better readability.
- [Entrypoint(string[])](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#entrypoint-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds an ENTRYPOINT statement to set the container entrypoint.
- [Env(string, string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#env-string-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds an ENV statement to set an environment variable.
- [Expose(int)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#expose-int) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds an EXPOSE statement to expose a port.
- [Run(string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#run-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds a RUN statement to execute a command.
- [RunWithMounts(string, string[])](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#runwithmounts-string-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds a RUN statement with mount options for BuildKit.
- [User(string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#user-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds a USER statement to set the user for subsequent commands.
- [WorkDir(string)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#workdir-string) : [DockerfileStage](/reference/api/csharp/aspire.hosting/dockerfilestage.md) `experimental` -- Adds a WORKDIR statement to set the working directory.
- [WriteStatementAsync(StreamWriter, CancellationToken)](/reference/api/csharp/aspire.hosting/dockerfilestage/methods.md#writestatementasync-streamwriter-cancellationtoken) : `Task` -- Writes the statement to the specified writer.
