Основная функция сервиса приложений — автоматический деплой. Apps автоматически выгружает на сервер код вашего сайта, API-сервиса, приложения и т.п.
Процесс работы с Apps при использовании backend-фреймворков выглядит так:
-
Подключение репозитория: Вы подключаете репозиторий к Timeweb Cloud, выполняя вход в свой аккаунт на GitHub, GitLab или Bitbucket, или по ссылке.
-
Подтягивание кода и установка зависимостей: Сервис автоматически подтягивает код из указанного репозитория и устанавливает необходимые зависимости, указанные в специальных файлах — таких как
requirements.txt
для Python илиpackage.json
для Node.js. -
Сборка приложения: Сервис определяет параметры сборки для вашего приложения и собирает его.
-
Запуск в Docker-контейнере: После сборки запускается Docker-контейнер с подходящим окружением, внутри которого работает ваше приложение.
-
Настройка Nginx: Timeweb Cloud Apps автоматически настраивает Nginx для проксирования вашего домена на запущенное приложение.
При выполнении git push
в ваш репозиторий (при включенном автодеплое) процесс начинается заново — начиная со второго этапа: сервис подтягивает код, ставит зависимости, собирает приложение и так далее.
Важно понимать, что каждый новый деплой запускает новое окружение, то есть создается новый Docker-контейнер, в котором не сохраняются данные из предыдущих версий контейнера. Это позволяет обеспечить чистоту деплоя, но имеет свои особенности в управлении данными.
Управление данными при использовании Apps
Поскольку данные внутри Docker-контейнера не сохраняются при повторном деплое, важно предусмотреть использование внешних хранилищ для данных, которые необходимо сохранить между деплоями:
-
Файлы и медиа: Если ваше приложение позволяет пользователям или администратору загружать файлы или медиа-контент, рекомендуется сохранять их в хранилище, таком как S3. Это гарантирует, что данные останутся доступными после обновления или повторного деплоя приложения.
-
Базы данных: В качестве базы данных также следует использовать внешние решения, такие как облачные базы данных или отдельные серверы баз данных, чтобы информация не терялась при обновлении контейнера.
К приложению будет привязан бесплатный технический домен с SSL-сертификатом Let's Encrypt, который можно использовать для тестирования работы и, если вам это подходит, — для запросов к приложению.
Работа сервиса с frontend-приложениями имеет одно важное отличие от backend-приложений — после сборки мы не создаем Docker-контейнер, приложение хранится в директории на сервере. Такое приложение — это статические файлы, которые отдаются клиентам с сервера.
Однако, в отличие от обычного размещения приложения на сервере, где вам нужно самостоятельно настраивать окружение, сервис Apps, как и в случае с бэкенд-приложениями, сделает всё за вас:
-
«подтянет» код из репозитория,
-
установит зависимости и ПО,
-
настроит Nginx,
-
выпустит SSL-сертификат,
-
выполнит сборку вашего приложения.
А в дальнейшем будет автоматически деплоить изменения — если вы оставите включенной опцию автодеплоя.
Отличная статья!
Я правильно понимаю, что "Переменные" в настройках деплоя в случае использования Dockerfile доступны и при сборке образа и в рантайме при запуске ?
Добрый день!
Да, переменные, которые вы указываете при настройке деплоя, доступны как при сборке образа, так и в рантайме. Здесь речь идет именно о переменных окружения (ENV), но не о аргументах сборки (ARG), которые доступны только во время сборки образа.
Полезный ответ, как раз искал информацию об этом, но не нашел в документации. Хорошо бы её туда вам добавить. Спасибо
Понятно