Сервис Apps позволяет развернуть приложение с помощью 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
.В пункте «Тип» перейдите на вкладку Dockerfile.
Выберите репозиторий с приложением. В корне репозитория должен быть размещен Dockerfile.
Репозиторий можно подключить:
Подробнее о подключении репозиториев — здесь.
1. Выберите ветку для деплоя.
2. По умолчанию мы включаем опцию «Сборка по последнему выполненному коммиту». В этом случае сервис Apps выполнит деплой по самому актуальному коммиту, а в дальнейшем будет автоматически пересобирать приложение при добавлении новых коммитов в репозиторий.
При необходимости вы сможете отключить автодеплой в дальнейшем.
Если вы хотите выбрать конкретный коммит вручную — отключите эту опцию.
Приложение должно быть развернуто на отдельном облачном сервере. Выберите регион размещения сервера и его конфигурацию.
В дальнейшем, если потребуется, вы сможете перейти на более мощный тариф.
Сервис автоматически прочитает инструкции из докерфайла и соберет приложение в соответствии с ними.
На этом этапе вы можете задать переменные (ARG), если это необходимо. Переменные ARG, заданные в панели, используются на этапе сборки образа, а не при запуске контейнера. Если они прописаны в докерфайле, дублировать их не требуется.
В дальнейшем у вас будет возможность внести изменения в параметры приложения, а также выбрать другую ветку и коммит, и перезапустить деплой с новыми настройками, если потребуется.
Задайте свое имя приложения, если требуется, и комментарий к нему. Это данные, которые будут отображаться в панели управления.
Также выберите, в какой проект его нужно добавить.
Эти настройки также можно изменить в дальнейшем.
Нажмите Запустить деплой. Как только процесс начнется, вы увидите лог деплоя на вкладке «Деплой».
Как правило, он содержит всю необходимую информацию для устранения возможных ошибок. Если что-то пойдет не так, например, из-за наличия ошибок в коде, в логе будут выведены уведомления о них с уточнением причины проблемы.
При первом развертывании проекта установка сервера может занять некоторое время. Как только процесс завершится, статус приложения обновится, а также вы увидите сообщение об этом в логе.
Готово!
IP-адрес приложения и бесплатный технический домен, привязанный к нему по умолчанию, можно найти на вкладе «Дашборд». Привязать собственный домен можно по нашей инструкции.
Приложение будет доступно по 443 порту; порт 80 также открыт.
В дальнейшем Apps будет отслеживать обновления в репозитории и, если включен автодеплой, автоматически перезапускать проект с новыми изменениями.
При создании сервиса выбираю конфигурацию (допустим 1cpu 1gb ram).
Шарятся ли эти ресурсы между запущенным приложением и сборщиком? Не возникнет ли, например, так что при сборке образа сборщик отъест всю память и продуктивный сервис ляжет? (вопрос по мотивам тикета 9975007 когда из за недостатка выбранной памяти падал сборщик по OOM)
Добрый день!
Сейчас сборка проекта выполняется на той же машине, где запущено приложение, то есть ресурсы действительно шарятся. В случае нехватки памяти OOM Killer может завершить уже работающее приложение.
Мы передали вашу идею разработчикам — они рассмотрят возможность выполнения сборки на отдельной машине, чтобы избежать подобных ситуаций. Но сроки реализации пока назвать не можем.
добрый день, я запускаю бэкэнд проект у которого заняты порты 3000 и 5500 для сокетов, как я могу запустить такой проект через apps
Добрый день!
Правильно понимаем, что речь про веб-сокеты? Сейчас такой проект через Apps запустить не получится. Мы уже передали кейс разработчикам, но пока не можем сказать, когда это будет возможно.
Если речь про что-то другое, расскажите подробнее или создайте обращение в поддержку — коллеги помогут разобраться.
Здравствуйте! Пытаюсь сделать деплой через Dockerfile. Но при попытке запустить сборку проекта с помощью Gradle - падает ошибка.
Текст dockerfile ниже. В чём может быть ошибка?
FROM eclipse-temurin:21-jdk WORKDIR / COPY gradle gradle COPY build.gradle.kts . COPY settings.gradle.kts . COPY gradlew . COPY ./src src COPY ./config config
RUN ./gradlew --no-daemon --stacktrace dependencies RUN ./gradlew --no-daemon --stacktrace build
ENV JAVA_OPTS="-Xmx1024M -Xms1024M" EXPOSE 8080
CMD java -jar build/libs/DomidzeBot-0.0.1-SNAPSHOT.jar
Добрый день!
Видим, что коллеги помогли вам разобраться с вопросом в тикете.
А в вашу managed базу данных по приватному адресу можно как-то ходить из apps при деплое через образ?
Добрый день! К сожалению, для Apps приватная сеть отсутствует. Однако выполнить подключение к базе данных возможно используя публичный адрес. Все зависит от того, какое у вас приложение и как именно в коде организовано подключение к базе данных.
Это понятно. Но было бы неплохо иметь такую опцию, чтобы не открывать базу наружу в принципе.
Подскажите, в apps на этапе сборки образа в args передаются переменные заданные в настройках? Или передаются только при запуске?
Добрый день! Переменные ARG, заданные в панели, используются на этапе сборки образа, а не при запуске контейнера.
Совсем скоро мы выпустим более подробную инструкцию по деплою из Dockerfile!
Надо какую-то пояснялку сделать что ли, что это именно ARG, а не переменные в рантайме. Не очевидно. В примере из гита вашем аргументов никаких, например, тоже нет.
Доброго времени суток, скажите пожалуйста когда планируете ввести деплой сразу с помощью docker-compose?
Добрый день! docker-compose в планах есть, но вот по срокам пока сориентировать не можем, к сожалению.
Когда-то ко мне звонили ребята из Selectel спрашивали, что вам ни хватает, какой сервис самый важный. Я им говорил что нужно реализовать функционал развертывания приложений с git репозиторий. Я их заверял что за этим будущие. То что сейчас делают такие компании как Railway, Netlify, Zeabur, SealOS, RepoCloud и другие, будут менять индустрию. Но до сих пор намека они не поняли. Печально, что им придётся догонять всех остальных, когда те уже идут семимильными шагами. TimeWeb все правильно делаете, не останавливайте развитие в этом направлении.