# Pier

> Declare apps, Postgres, buckets, volumes and sites in pier.yaml; the pier CLI builds, deploys and runs them in microVMs

URL: https://pier.run/docs

Pier runs containers. `pier.yaml` declares what an environment contains (apps, Postgres
instances, buckets, volumes, static sites, domains) and two commands converge the platform
to it:

```bash
pier apply     # create, change and remove what is declared
pier deploy    # build and roll what changed (implies apply)
```

Every app target runs in its own microVM behind an HTTPS hostname. Postgres instances,
buckets and volumes are provisioned in the same environment.

<Card title="Install" href="/docs/install" description="The pier CLI, login, profiles" />

<Card title="Quickstart" href="/docs/quickstart" description="A container on a public hostname in five commands" />

<Card title="Concepts" href="/docs/concepts" description="Workspace, project, environment, resource, target" />

<Card title="CLI reference" href="/docs/cli" description="Every command, generated from the binary" />

## How Pier is used

| You have                       | Do                                                                                     |
| ------------------------------ | -------------------------------------------------------------------------------------- |
| a container image              | declare it as an app target with `image:` and `port:` ([Quickstart](/docs/quickstart)) |
| a repository with a Dockerfile | declare an app with `build_context: .`; `pier deploy` builds it                        |
| a repository on GitHub         | `pier github connect`; a push to the configured branch then deploys                    |
| a static site                  | declare a site; `pier deploy www` builds and publishes it                              |
| a script or CI job             | every command takes `--json` and `-y` ([Scripting](/docs/cli/scripting))               |
