<commit_before># Deploying an Application

An [Application][] is deployed to Deis using `git push` or the `deis` client.

## Supported Applications

Deis can deploy any application or service that can run inside a Docker container.  In order to be scaled horizontally, applications must follow the [Twelve-Factor App][] methodology and store any application state in external backing services.

For example, if your application persists state to the local filesystem -- common with content management systems like Wordpress and Drupal -- it cannot be scaled horizontally using `deis scale`.

Fortunately, most modern applications feature a stateless application tier that can scale horizontally inside Deis.


## Login to the Controller

!!! important
	if you haven't yet, now is a good time to [install the client][install client] and [register](../using-workflow/registering-a-user.md).

Before deploying an application, users must first authenticate against the Deis [Controller][]
using the URL supplied by their Deis administrator.

    $ deis login http://deis.example.com
    username: deis
    password:
    Logged in as deis

## Upload Your SSH Public Key

If you plan on using `git push` to deploy applications to Deis, you must provide your SSH public key.  Use the `deis keys:add` command to upload your default SSH public key, usually one of:

* ~/.ssh/id_rsa.pub
* ~/.ssh/id_dsa.pub<commit_msg>bug: fix the build<commit_after># Deploying an Application

An [Application][] is deployed to Deis using `git push` or the `deis` client.

## Supported Applications

Deis can deploy any application or service that can run inside a Docker container.  In order to be scaled horizontally, applications must follow the [Twelve-Factor App][] methodology and store any application state in external backing services.

For example, if your application persists state to the local filesystem -- common with content management systems like Wordpress and Drupal -- it cannot be scaled horizontally using `deis scale`.

Fortunately, most modern applications feature a stateless application tier that can scale horizontally inside Deis.


## Login to the Controller

!!! important
	if you haven't yet, now is a good time to [install the client][install client] and [register](../using-workflow/users-and-registration.md).

Before deploying an application, users must first authenticate against the Deis [Controller][]
using the URL supplied by their Deis administrator.

    $ deis login http://deis.example.com
    username: deis
    password:
    Logged in as <PASSWORD>

## Upload Your SSH Public Key

If you plan on using `git push` to deploy applications to Deis, you must provide your SSH public key.  Use the `deis keys:add` command to upload your default SSH public key, usually one of:

* ~/.ssh/id_rsa.pub
* ~/.ssh/id_dsa.pub
{'fraction_non_alphanumeric': 0.06746732603320381, 'fraction_numerical': 0.0, 'mean_word_length': 4.343396226415094, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1766739', 'n_tokens_mistral': 759, 'n_tokens_neox': 707, 'n_words': 384}