> ## Documentation Index
> Fetch the complete documentation index at: https://astronomer.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy code to Astronomer Software using the Astro CLI

To run your code on Astronomer Software, you need to deploy it to an Airflow Deployment. You can deploy part or all of an Astro project to an Airflow Deployment using the Astro CLI.

When you deploy a project, the Astro CLI builds your all files in your Astro project, including DAGs, into a Docker image. It then pushes this image to an image registry on your Astronomer Software cluster where your Deployment accesses the image and uses it to run Airflow containers.

For guidance on automating this process, refer to [Deploy to Astronomer via CI/CD](/docs/astro-private-cloud/v-0-36/ci-cd). To learn how to add Python and OS-level packages or otherwise customize your Docker image, read [Customize your image](/docs/astro-private-cloud/v-0-36/customize-image).

This document covers deploying a complete project image to Astro. To deploy DAGs only, see:

* [Deploy DAGs using the Astro CLI](/docs/astro-private-cloud/v-0-36/deploy-dags)
* [Deploy DAGs to an NFS volume](/docs/astro-private-cloud/v-0-36/deploy-nfs)
* [Deploy DAGs using git-sync](/docs/astro-private-cloud/v-0-36/deploy-nfs).

<Info>Astronomer recommends that all users use the Astro CLI to test their code locally before pushing it to an Airflow Deployment on Astronomer. For guidelines on developing locally, see [CLI Quickstart](/docs/cli/v1.43/install-cli).</Info>

## Prerequisites

In order to push up DAGs to a Deployment on Astronomer, you must have:

* [The Astro CLI](/docs/cli/v1.43/install-cli) installed.
* Access to an Astronomer platform at `https://app.BASEDOMAIN`.
* An Astronomer [Workspace](/docs/astro-private-cloud/v-0-36/manage-workspaces) with at least one active [Airflow Deployment](/docs/astro-private-cloud/v-0-36/configure-deployment).

## Step 1: Authenticate to Astronomer

To authenticate with the Astro CLI, run:

```sh wrap theme={null}
astro login BASEDOMAIN
```

## Step 2: Confirm Your Workspace and Deployment

From the Astro CLI, you can push code to any Airflow Deployment you have access to as long as you have the appropriate deployment-level permissions. For more information on both Workspace and Deployment-level permissions on Astronomer, see [User permissions](/docs/astro-private-cloud/v-0-36/workspace-permissions).

Before you deploy to Astronomer, make sure that the Airflow Deployment you'd like to deploy to is within the Workspace you're operating in.

To see the list of Workspaces you have access to, run:

```sh wrap theme={null}
astro workspace list
```

To switch between Workspaces, run:

```sh wrap theme={null}
astro workspace switch
```

To see the list of Deployments within a particular Workspace, run:

```sh wrap theme={null}
astro deployment list
```

For more specific CLI guidelines and commands, read [CLI quickstart](/docs/cli/v1.43/install-cli).

## Step 3: Deploy to Astronomer

Finally, make sure you're in the correct Astro project directory.

When you're ready to deploy your DAGs, run:

```sh wrap theme={null}
astro deploy
```

This command returns a list of Airflow Deployments available in your Workspace and prompts you to pick one. After you execute the command, all files in your Astro project directory are built into a new Docker image, the image is pushed to the Astronomer Software registry, and the containers for all Airflow components in the Deployment are restarted.

<Info>If your code deploy fails and you configured your CLI to use Podman, you might need to set an additional environment variable. See [Troubleshoot your Podman configuration](/docs/cli/v1.43/configure-cli).</Info>

## Step 4: Validate Your Changes

If it's your first time deploying, expect to wait a few minutes for the Docker image to build.

To confirm that your deploy was successful, navigate to your Deployment in the Software UI and click **Open Airflow** to see your changes in the Airflow UI.

### What gets deployed?

Everything in the project directory where you ran `$ astro dev init` is bundled into a Docker image and deployed to your Airflow Deployment on your Astronomer platform. This includes system-level dependencies, Python-level dependencies, DAGs, and your `Dockerfile`.

Astronomer exclusively deploys the code in your project and does not push any of the metadata associated with your local Airflow environment, including task history and Airflow connections or variables set locally in the Airflow UI.

For more information about what gets built into your image, read [Customize your image](/docs/astro-private-cloud/v-0-36/customize-image).
