Обзор
Веб-сервер
Утилиты для баз данных
Брокеры сообщений
Low-code
Менеджеры паролей и секретов

Запуск приложения на основе фреймворка FastAPI на Dockhost

В данной статье мы рассмотрим деплой приложения, написанного на Python c использованием фреймворка FastAPI.

В качестве примера возьмём небольшое приложение, состоящее из нескольких простых контроллеров. Исходный код данного приложения можно посмотреть здесь: example-fastapi.

Деплой приложения будет производиться на платформе Dockhost. В рамках примера предполагаем, что у пользователя есть учётная запись на платформе.

Подключение репозитория Git

Перед подключением репозитория, в корневой директории необходимо создать Dockerfile со следующим содержимым:

FROM python:3.9

ENV PYTHONUNBUFFERED=1 \
    PIP_DISABLE_PIP_VERSION_CHECK=on

WORKDIR /app

COPY requirements.txt /app/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt

COPY . /app

CMD ["fastapi", "run", "main.py", "--port", "8000", "--proxy-headers"]

Данный Dockerfile использует базовый образ python:3.9, устанавливает все зависимости из файла requirements.txt и копирует содержимое из всего репозитория в папку /app.

В качестве основной команды будет использоваться fastapi run main.py --port 8000 --proxy-headers. Данная команда запустит приложение, которое будет слушать 8000 порт и дополнительно включит заголовки X-Forwarded-For, для получения реального IP-адреса пользователя от сетевых сервисов платформы Dockhost. В дальнейшем из данного Dockerfile будет собран и запущен контейнер с приложением.

Вы можете добавить файл .dockerignore и указать в нём файлы или папки, которые не должны быть скопированы в контейнер.

Теперь в Вашем репозитории есть Dockerfile, и Вы можете подключить его (репозиторий) к платформе Dockhost. Для этого в проекте my-project (проект может быть любым, для примера мы будем использовать my-project, который создаётся по умолчанию при регистрации на платформе) необходимо перейти в раздел «Репозитории Git» и добавить репозиторий.

В нашем примере Git-репозиторий является публичным и не требует авторизации. Для того чтобы подключить приватный Git-репозиторий, необходимо указать имя пользователя и пароль в разделе «Авторизация».

Для подключения приватного репозитория GitHub необходимо использовать Personal access tokens. Как использовать персональный токен смотрите в статье Using a personal access token.

Далее нажмите на кнопку «Применить» и дождитесь завершения процесса подключения репозитория и первой сборки контейнера из репозитория.

Настройка контейнера

Как только процесс сборки будет завершён, в разделе «Контейнеры» появится контейнер приложения.

В логах контейнера будет запись об успешном старте приложения.

Теперь необходимо указать для контейнера порт, который слушает Ваше приложение, для этого нажмите на кнопку «Управлять», чтобы перейти в раздел просмотра контейнера и на открывшейся странице нажмите на кнопку «Редактировать».

В открывшемся модальном окне, в разделе «Порты», добавьте новый порт 8000.

Далее нажмите на кнопку «Применить» и дождитесь завершения процесса перезапуска контейнера.

Настройка домена и маршрута

Теперь контейнер настроен и готов принимать входящий трафик на порт 8000. Для доступа к контейнеру из Интернета добавим динамический домен и настроим маршрутизацию трафика.

Для создания или подключения домена необходимо перейти в раздел «Сетевые сервисы», подраздел «Домены» и добавить домен.

Далее нажмите на кнопку «Применить» и дождитесь завершения процесса создания домена.

Мы будем использовать динамический домен, который использует домен 3 уровня от платформы Dockhost. При необходимости Вы можете подключить свой домен.

Как только домен будет создан, необходимо настроить маршрутизацию трафика, для этого перейдите в раздел «Сетевые сервисы», подраздел «Маршруты» и добавьте новый маршрут.

Далее нажмите на кнопку «Применить» и дождитесь завершения процесса запуска сервиса маршрутизации.

При первом добавлении маршрута может потребоваться 1-2 минуты для запуска и настройки сервиса.

Вы можете увидеть карту сети проекта, если перейдёте в раздел «Сетевые сервисы», подраздел «Карта сети»:

Теперь приложение полностью настроено и запущено, а благодаря настройке деплоя через Push, при изменении кода платформа Dockhost будет автоматически собирать и запускать новую версию приложения.

В дальнейшем Вы можете взять за основу наш репозиторий example-fastapi и расширить функционал, при необходимости добавив новые команды и функции.

Если у Вас уже есть свой проект, написанный на Python, Вы можете так же просто запустить его на платформе Dockhost, используя пошаговый алгоритм из нашей статьи. Для этого воспользуйтесь примерами Dockerfile и придерживайтесь описанной последовательности действий.

В этой статье
Подключение репозитория Git
Настройка контейнера
Настройка домена и маршрута

Мы используем файлы cookies

Продолжив работу с сайтом, вы соглашаетесь с   политикой использования файлов Cookies