Больше не нужно искать работу мечты — присоединяйтесь к команде Клауда
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

Деплой из Dockerfile

Сервис Apps позволяет развернуть приложение с помощью Dockerfile, размещенного в репозитории. Благодаря этому вы можете деплоить любые приложения, в том числе созданные на фронтенд- и бэкенд-фреймворках, которые сервис не поддерживает напрямую.

Требования для запуска

  • Для корректного деплоя Dockerfile должен быть размещен в корне репозитория и содержать необходимые инструкции для сборки и запуска и приложения. Пример докерфайла и приложения можно найти на Гитхабе.
  • В Dockerfile должен быть прописан параметр EXPOSE, чтобы сервис мог определить, какой порт должен слушать Nginx. Если EXPOSE не задан, Nginx по умолчанию будет слушать порт контейнера 8080.

Пример:

FROM python:3.6
MAINTAINER Name Name "mail@mail.com"
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
ENTRYPOINT ["python"]
CMD ["app.py"]
EXPOSE 3478
  • Сервис не поддерживает docker-compose.
  • Необходимые переменные окружения могут быть заданы как в самом докерфайле, так в процессе запуска приложения в панели Timeweb Cloud.

Шаг 1. Выбор приложения

В пункте «Тип» перейдите на вкладку Dockerfile.

830afd6b 1fed 4247 9e95 1e2f835a75e9

Шаг 2. Подключение репозитория

Выберите репозиторий с приложением. В корне репозитория должен быть размещен Dockerfile. 

Репозиторий можно подключить:

  • Из вашего аккаунта GitHub, GitLab или BitBucket. Кликните на название платформы, авторизуйтесь и выберите нужный репозиторий. Если вы уже авторизованы, панель сразу покажет доступные репозитории.
  • По URL, указав ссылку на репозиторий, созданный на любой платформе. Кликните «Подключите git-репозиторий по URL» (либо «Добавить аккаунт» → «Подключите git-репозиторий по URL») и укажите Git URL репозитория. Если репозиторий приватный, введите реквизиты доступа.

Подробнее о подключении репозиториев — здесь.

Шаг 3. Выбор ветки и коммита

517295ae 5c3b 46dd Bff5 48b5cde866a5

1. Выберите ветку для деплоя.

2. По умолчанию мы включаем опцию «Сборка по последнему выполненному коммиту». В этом случае сервис Apps выполнит деплой по самому актуальному коммиту, а в дальнейшем будет автоматически пересобирать приложение при добавлении новых коммитов в репозиторий. 

При необходимости вы сможете отключить автодеплой в дальнейшем.

Если вы хотите выбрать конкретный коммит вручную — отключите эту опцию.

7690c0ce 69f7 49cb 94b3 7afdb3d18245

Шаг 4. Регион и конфигурация сервера

Приложение должно быть развернуто на отдельном облачном сервере. Выберите регион размещения сервера и его конфигурацию. 

Af9f847d C518 4416 Bed7 1579e16d8b14

В дальнейшем, если потребуется, вы сможете перейти на более мощный тариф.

Шаг 5. Настройка приложения

Сервис автоматически прочитает инструкции из докерфайла и соберет приложение в соответствии с ними. 

На этом этапе вы можете задать переменные (ARG), если это необходимо. Переменные ARG, заданные в панели, используются на этапе сборки образа, а не при запуске контейнера. Если они прописаны в докерфайле, дублировать их не требуется.

1db674b1 0834 4be3 Aa1a 80e6983c4317

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

Шаг 6. Информация о приложении

Задайте свое имя приложения, если требуется, и комментарий к нему. Это данные, которые будут отображаться в панели управления.

Также выберите, в какой проект его нужно добавить.

5c5d10af 256b 431a 8264 02c3ec0927ac

Эти настройки также можно изменить в дальнейшем.

Шаг 7. Деплой

Нажмите Запустить деплой. Как только процесс начнется, вы увидите лог деплоя на вкладке «Деплой». 

Как правило, он содержит всю необходимую информацию для устранения возможных ошибок. Если что-то пойдет не так, например, из-за наличия ошибок в коде, в логе будут выведены уведомления о них с уточнением причины проблемы. 

При первом развертывании проекта установка сервера может занять некоторое время. Как только процесс завершится, статус приложения обновится, а также вы увидите сообщение об этом в логе. 

Group 1321314123

Готово!

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

Приложение будет доступно по 443 порту; порт 80 также открыт.

Без Названия

В дальнейшем Apps будет отслеживать обновления в репозитории и, если включен автодеплой, автоматически перезапускать проект с новыми изменениями. 

Была ли статья полезна?
Ваша оценка очень важна
Комментарии 9
Artem Zaitsev
Artem Zaitsev
14.06.2024, 06:31

А в вашу managed базу данных по приватному адресу можно как-то ходить из apps при деплое через образ?

Команда Timeweb Cloud
Команда Timeweb Cloud
14.06.2024, 07:17

Добрый день! К сожалению, для Apps приватная сеть отсутствует. Однако выполнить подключение к базе данных возможно используя публичный адрес. Все зависит от того, какое у вас приложение и как именно в коде организовано подключение к базе данных.

Artem Zaitsev
Artem Zaitsev
14.06.2024, 16:04

Это понятно. Но было бы неплохо иметь такую опцию, чтобы не открывать базу наружу в принципе.

Artem Zaitsev
Artem Zaitsev
10.06.2024, 15:25

Подскажите, в apps на этапе сборки образа в args передаются переменные заданные в настройках? Или передаются только при запуске?

Команда Timeweb Cloud
Команда Timeweb Cloud
11.06.2024, 10:17

Добрый день! Переменные ARG, заданные в панели, используются на этапе сборки образа, а не при запуске контейнера.

Совсем скоро мы выпустим более подробную инструкцию по деплою из Dockerfile!

Artem Zaitsev
Artem Zaitsev
14.06.2024, 02:33

Надо какую-то пояснялку сделать что ли, что это именно ARG, а не переменные в рантайме. Не очевидно. В примере из гита вашем аргументов никаких, например, тоже нет.

Dimimnf
Dimimnf
28.04.2024, 08:34

Доброго времени суток, скажите пожалуйста когда планируете ввести деплой сразу с помощью docker-compose?

Команда Timeweb Cloud
Команда Timeweb Cloud
02.05.2024, 07:01

Добрый день! docker-compose в планах есть, но вот по срокам пока сориентировать не можем, к сожалению.

ОПЕП РУ
ОПЕП РУ
16.04.2024, 23:04

Когда-то ко мне звонили ребята из Selectel спрашивали, что вам ни хватает, какой сервис самый важный. Я им говорил что нужно реализовать функционал развертывания приложений с git репозиторий. Я их заверял что за этим будущие. То что сейчас делают такие компании как Railway, Netlify, Zeabur, SealOS, RepoCloud и другие, будут менять индустрию. Но до сих пор намека они не поняли. Печально, что им придётся догонять всех остальных, когда те уже идут семимильными шагами. TimeWeb все правильно делаете, не останавливайте развитие в этом направлении.