Документация по развертыванию приложений на Python

Полная документация Amvera Cloud по ссылке https://docs.amvera.ru/

В разделе собрана базовая документация для быстрого ознакомления с процессом развертывания на время восстановления основного портала с документацией
Пример развертывания приложения

Данная конфигурация подходит, если проект написан на языке Python и либо не имеет зависимостей, либо они прописаны в файле `requirements.txt`.

#### Секция meta

Секция meta файла amvera.yml будет выглядеть следующим образом:

```
meta:
  environment: python
  toolchain:
    name: pip
    version: 3.10
```

Как для сборки, так и для запуска используется образ Docker `python:${meta.toolchain.version}`. Параметр `meta.toolchain.version` необязательный. Если его не указать, будет использоваться образ `python:3`.

Так как значение параметра `meta.toolchain.version` является тегом образа python, можно в качестве его значения использовать произвольный тег на [докер хабе](https://hub.docker.com/_/python/tags). Однако из-за того, что мы вызываем интерпретатор как `python3`, а также пользуемся модулем `venv` в команде `python3 -m venv`, образ Python должен поддерживать эти возможности.

#### Секция build

В секции `build` может быть указан один необязательный параметр: `requirementsPath`. Он определяет путь до файла `requirements.txt` относительно корня репозитория. Если этот параметр не задан, он по умолчанию равен `requirements.txt`.

Если, например, этот файл находится в папке build, то значение этого параметра необходимо указать следующим образом:

```
build:
  requirementsPath: build/requirements.txt
```

Если в проекте вообще не используется файл `requirements.txt` или скрипт сборки не сможет его обнаружить по указанному пути, то фаза установки зависимостей будет пропущена.

#### Секция run

В секции `run` могут быть указаны следующие параметры:

 - `scriptName`
 - `command`
 - `persistenceMount`
 - `containerPort`

Параметры `scriptName` и `command` взаимоисключающие. Один из них должен быть указан для успешного запуска приложения.

Параметр `scriptName` указывает путь до файла с расширением `py`. Он используется в команде `python3 ${run.scriptName}`:

```
run:
  scriptName: app.py
```

В случае, если запуск осуществляется другой командой, например, `gunicorn`, то можно использовать параметр `command`:

```
run:
  command: gunicorn --bind 0.0.0.0:80 app:app
```
Параметр `persistenceMount` позволяет указать, в какую директорию будет примонтирована папка с постоянным хранилищем. По умолчанию имеет значение `/data`.

Параметр `containerPort` позволяет указать какой порт слушает приложение. По умолчанию имеет значение `80`.

### Рецепты

#### Минимальный файл amvera.yml

```
meta:
  environment: python
  toolchain:
    name: pip
    version: 3.10

run:
  scriptName: app.py
```

#### WSGI-приложение (напр., приложение на Flask)

Данный файл предполагает, что `gunicorn` прописан в файле `requirements.txt`.

```
meta:
  environment: python
  toolchain:
    name: pip
    version: 3.10

run:
  command: gunicorn --bind 0.0.0.0:5000 app:app
  containerPort: 5000
```

#### ASGI-приложение (напр., приложение на FastAPI)

Данный файл предполагает, что `uvicorn[standard]` прописан в файле `requirements.txt`.

```
meta:
  environment: python
  toolchain:
    name: pip
    version: 3.10

run:
  command: uvicorn --host 0.0.0.0 --port 5000 app:app
  containerPort: 5000
```
Хотите попробовать?
Пожалуйста, оставьте контакты - мы свяжемся с вами как можно быстрее
Контакты
Москва, Пресненская Набережная 10с2