Python Pip
Данная конфигурация подходит, если проект написан на языке Python и либо не имеет зависимостей, либо они прописаны в файле requirements.txt
.
Создать yml-файл можно в интерфейсе, воспользоваться нашим генератором yaml, перейдя по ссылке, либо самостоятельно, используя инструкции ниже.
Инструкция по заполнению конфигурации через интерфейс находится во второй половине данной статьи.
Секция meta
В секции мета задается версия Python, которую вы используете.
Секция 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, можно в качестве его значения использовать произвольный тег на докер хабе. Однако из-за того, что мы вызываем интерпретатор как python3
, а также пользуемся модулем venv
в команде python3 -m venv
, образ Python должен поддерживать эти возможности.
Секция build
В секции build указывается имя файла с зависимостями (библиотеками, которые система должна установить через pip).
В секции 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
.
Постоянное хранилище и папка 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
Рекомендации по заполнению конфигурации через раздел личного кабинета
Задать конфигурацию вы можете в интерфейсе личного кабинета при создании проекта, либо в разделе "Конфигурация" в созданном проекте.

Секции
meta (version)
В секции следует указать версию python, которую вы используете.
build (requirementsPath)
Указывается имя файла с зависимостями. Чаще всего это requirements.txt. Важно, чтобы файл с зависимостями находился в корне репозитория. В файле зависимостей указываются библиотеки, которые вы используете в проекте (и устанавливали на компьютер через pip, когда запускали проект у себя). Указывать стандартные библиотеки не нужно. Частой ошибкой является использование в файле requirements.txt - имени telebot, а не pyTelegramBotAPI для телеграм-ботов на Python, правильно - pyTelegramBotAPI.
Если, например, файл с зависимостями находится не в корне, а в папке (в примере ниже в папке в build), то значение этого параметра необходимо указать следующим образом:
build:
requirementsPath: build/requirements.txt
Если файл находится в корне, укажите
build:
requirementsPath: requirements.txt
run
Параметры scriptName
и command
взаимоисключающие. Один из них должен быть указан для успешного запуска приложения.
scriptName
Укажите имя файла, который запускает проект. Если проект состоит из одного файла, укажите имя данного файла.
Обычно, это такие имена, как app.py, main.py и т.д..
command
Если проект запускается из команды, укажите вместо scriptName команду.
Примером может являться команда из статьи “Быстрый старт”
run:
command: gunicorn --bind 0.0.0.0:5000 app:app
Либо в зависимости от порта
run:
command: gunicorn --bind 0.0.0.0:80 app:app
Заполняется либо scriptName, либо command.
persistenceMount
Это папка постоянного хранилища. В нашем сервисе она по умолчанию /data
ВАЖНО №1: Файлы в /data не затираются при пересборке проекта, в отличии от репозитория, где они откатятся к версии коммита. Поэтому, мы рекомендуем использовать именно /data для баз данных.
ВАЖНО №2: Если вы создадите в репозитории папку data, это не то-же самое, что папка /data у нас. Папка data в репозитории, это просто папка в репозитории, которая может быть затерта при пересборке проекта.
В коде проекта следует указать /data как место для сохранения файлов.
Если вам неудобно использовать каталог /data, обычно, вы можете его изменить в файле amvera.yml. Например:
persistenceMount: /var/myapp/data
При развертывании полностью с помощью amvera.yml, мы не рекомендуем задавать значение run.persistenceMount равной /app или его подпапке: это может приводить к некорректному поведению.
conteinerPort
Укажите порт, который слушает ваше приложение. В базовой версии у нас открыт 80 порт.
Если ваше приложение работает по протоколу HTTP, но использует номер порта, отличный от 80, это можно настроить следующим файлом amvera.yml
:
run:
containerPort: 3000
После заполнения соответствующих полей нажмите кнопки "применить" (для раздела "Конфигурация") или "завершить", если вы задаете параметры при создании проекта.
Конфигурационный файл будет добавлен в корень репозитория и отобразится в подразделе "Код" раздела "Репозиторий". Не забудьте добавить его в свой локальный репозиторий склонировав репозиторий из Amvera, либо скачав "код" из личного кабинета.
После нажатия кнопки "Собрать" в конфигурации, либо пуше в репозиторий, либо при нажатии кнопки "Завершить" в рамках создания проекта, будет произведен коммит в репозиторий и начнется процесс сборки приложения.