Хостим OneScript.Web приложение (heroku)

20.11.19

Разработка - OneScript

Развертывание oscript.web в heroku.

Heroku — облачная PaaS-платформа, поддерживающая ряд языков программирования. (см. wiki)

Платформа heroku поддерживает многие популярные языки, но к сожалению нет официальной поддержки языка C#. Но есть возможность использовать, так называемые buildpacks от независимых разработчиков для возможности развертывания приложений на других языках. К сожалению многие билдпаки для C# или уже перестали работать или имеют особые условия для кодовой базы, что является критичным при желании развернуть приложение на os.web. К счастью в heroku есть возможность использовать docker-контейнеры, т.е можно запаковать свое приложение локально и разместить его в Heroku Container Registry для дальнейшего развертывания на платформе.

Но в данной статье речь пойдет о новой возможности развертывания в heroku, так называемой Docker Builds with heroku.yml (beta). По сути это билдпак - инструкция для построения вашего docker-контейнера с приложением. Плюсом, при использовании heroku.yml, по сравнению с возможностью размещения своего образа в Heroku Container Registry является то, что сборка производится не где то у себя на стороне, а на платформе heroku, и тут же происходит развертывание приложения. Т.е нам нет необходимости ставить себе docker на машину.

Создание приложения в heroku

Для начала необходимо будет установить Heroku CLI. Далее необходимо перейти в каталог где будут размещаться исходники нашего приложения и выполнить:

heroku login

Далее создадим новое приложение, выполнив команду:

heroku create your-app-name --manifest

И укажем, что наше новое приложение будет являться контейнером:

heroku stack:set container --app your-app-name

Более подробно можно ознакомится в официальной документация по heroky.yml

Установим значение переменной окружения APP_NAME как название приложения


bash heroku config:set APP_NAME=your-app-name --app your-app-name

Для развертывания нам надо будет отправить код приложения в heroku, сделать это можно командой git push heroku master, но об этом чуть позже. Далее необходимо добавить в корень проекта два файла:

heroku.yml - для инструкции как запускать приложение в платформе.

build:
  docker:
    web: Dockerfile.Heroku
  config:
    APP_NAME: $APP_NAME
    LOGGING_CONSOLE: $LOGGING_CONSOLE
    LOGGING_LEVEL: $LOGGING_LEVEL

run:
  web: mono /var/osp.net/OneScript.WebHost.exe --urls http://*:$PORT

Dockerfile.Heroku - для инструкции как "законтейнезировать" приложение.

    FROM pallid/oscript-web-heroku:dev 
COPY src /app 

ARG APP_NAME 
ARG LOGGING_CONSOLE 
ARG LOGGING_LEVEL 

# Ставим зависимости указанные в packagedef 
RUN curl -o deb oscript.io/Downloads/latest/deb && dpkg -i deb && cd /app && opm install -l 

Пример сборки своего образа для указания во FROM

    FROM mono:5.10 

ENV LANG ru_RU.UTF-8 
ADD artifact/net461/debian-x64 /var/osp.net 

WORKDIR /app
    

После внесения изменений в репозиторий, отправляем код в heroku

git push heroku master 
 
 Лог развертывания

 

Теперь можно открыть приложение и посмотреть результат, перейдя по адресу your-app-name.herokuapp.com

На странице должно выводится название приложения, которое было передано в переменной APP_NAME

Результат

Этот пример взят из репозитория

Ссылки:

UPD (20.11.2019) :

Дополнение от karimshakirov под версию oscriptweb 0.5.0 и выше

heroku.yml - для инструкции как запускать приложение в платформе.

build:
  docker:
    web: Dockerfile.Heroku
  config:
    APP_NAME: $APP_NAME
    LOGGING_CONSOLE: $LOGGING_CONSOLE
    LOGGING_LEVEL: $LOGGING_LEVEL

run:
  web: dotnet /var/osp.net/OneScript.WebHost.dll --urls http://*:$PORT

Dockerfile.Heroku - для инструкции как "законтейнезировать" приложение.

FROM k2589/oscriptweb4heroku:0.5.0

COPY /src /app

ARG APP_NAME
ARG LOGGING_CONSOLE
ARG LOGGING_LEVEL

# Ставим зависимости указанные в packagedef
RUN curl -o deb oscript.io/Downloads/latest/deb && dpkg -i deb && cd /app && opm install -l

Пример сборки своего образа для указания во FROM

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
ENV LANG ru_RU.UTF-8
ENV ASPNETCORE_ENVIRONMENT=Production
COPY artifact/net461/debian-x64 /var/osp.net
WORKDIR /app

heroku oscript oscriot.web

См. также

Работа с интерфейсом OneScript Программист Платформа 1С v8.3 Россия Бесплатно (free)

Графический интерфейс с применением веб-технологий в коллекцию инструментария сценарного языка OneScript. Библиотека создает десктопное приложение имеющее декларативный пользовательский интерфейс (GUI), построенный веб-браузером. Возможности веб-технологий по представлению информации огромны. Эти возможности соответственно добавляются и к сценариям OneScript.

23.01.2025    328    0    ahyahy    4    

8

OneScript Программист Бесплатно (free)

Вместе создадим библиотеку на Oscript с нуля, шаг за шагом: от базовой структуры проекта до перевода на ОСень. Разберем структуру проекта, работу с файлом конфигурации, логирование, уведомления, консольный интерфейс и многое другое. Освоим весь цикл разработки и сделаем первый шаг к созданию собственных инструментов на Oscript!

13.01.2025    2176    leobrn    16    

57

OneScript Программист Платформа 1С v8.3 Бесплатно (free)

Если вы, так же как и я, давно хотели попробовать сделать что-то свое на OneScript, но никак не могли к нему подступиться, то, возможно, эта статья пригодится вам в качестве некоего вводного материала.

10.01.2025    1948    KamranV21    12    

37

OneScript Программист Бесплатно (free)

В мире OneScript давно существуют библиотеки для облегчения работы с каким-либо классом программного обеспечения, например v8runner - помощник выполнения команд конфигуратора или gitrunner - программная обертка для запуска команд git. Есть библиотека и для работы с автономным сервером 1с. Однако библиотеке ibcmdrunner уже три года, а про нее нет ни одной публикации на инфостарте. Исправляю эту несправедливость.

09.01.2025    1288    ardn    0    

22

OneScript Программист Бесплатно (free)

Отгремел Infostart Tech Event 2024, топовое событие в мире 1С-разработки, традиционно проходящее в Санкт-Петербурге. Ваш покорный слуга в этот раз отмечал там 10-летний юбилей проекта OneScript. Отмечание проводилось в форме игры-соревнования по забегу роботов в лабиринте. Участники пытались написать алгоритм движения робота на языке 1С и сделать это быстрее других. О том, как это было – под катом.

28.10.2024    1712    Evil Beaver    11    

25

OneScript Программист Бесплатно (free)

OneScript – это скриптовый движок для автоматизации всего и вся. О том, как OneScript помогает в разработке скриптов на языке 1С, пойдет речь в статье.

10.10.2024    3995    ardn    2    

9

Инструментарий разработчика OneScript Программист Руководитель проекта Бесплатно (free)

Все мы хотя бы раз работали с конструктором запросов. Результатом его работы является синтаксически верный запрос, оформленный по некоторому стандарту. Нравится - не нравится, а привыкаешь быстро, и на запрос, написанный руками, уже не хочется смотреть... А почему бы не попробовать сделать то же самое с исходным кодом 1С? Ну я и попробовал...

23.09.2024    822    0    stopa85    5    

5

Групповая разработка (Git, хранилище) OneScript Программист Платформа 1С v8.3 Бесплатно (free)

Скрипт для работы с SonarQube и локальным репозиторием Git.<br> Цель проекта – возможность выполнить быструю проверку качества кода перед тем, как помещать доработки в рабочее хранилище. В Sonar и Git выгружается не вся конфигурация, а только объекты из заданного списка.<br> https://github.com/vkrivov/go/

02.07.2024    5121    vkrivov@yandex.ru    8    

20
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. 🅵🅾️🆇 524 20.12.18 18:26 Сейчас в теме
Я не сколько не преуменьшаю вклад и академическую ценность OneScript, но это очень сомнительное решение для веб приложения)
Советую попробывать Go + Gin, свое приложение вы сделаете за день, там даже учить ничего не надо.
DAAbramov; Soloist; +2 Ответить
2. Evil Beaver 8262 20.12.18 19:23 Сейчас в теме
(1) вообще ничего? Или html+css+go все-таки придется?
3. 🅵🅾️🆇 524 20.12.18 19:49 Сейчас в теме
(2) Я понимаю, что Вы утрируете.
Но всеже синтаксис Go до безобразия прост для языков его класса.
Собственно, это основное призвание языка - быть супершустрым микросервисом.

Для 1с'ника писать на нем гораздо проще веб приложения чем на OneScript

Вот пример роутера и по сути, в большинстве своем, готового супербыстрого микросервиса:
package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run() // listen and serve on 0.0.0.0:8080
}
Показать

Все что тут может быть хоть сколько непонятно - сразу встается на свои места при использовании IDE и вход в бэкэнд (к томуже кроссплатформенный) занимает 1-2 дня максимум.

Но опятьже, лично Вы - безусловно большой молодец, мне очень нравятся ваши работы на шарпе и свою звездочку на гитхабе давно отдал :3
4. pallid 273 21.12.18 08:45 Сейчас в теме
Для 1с'ника писать на нем гораздо проще веб приложения чем на OneScript


это хорошо, когда есть в наличии такие одинескини. попробуй объяснить некоторым что такое фп, и почему так пишется в го.

хотя и в ос.вебе мвс патерн не всем заходит
5. karimshakirov 20.11.19 15:57 Сейчас в теме
Небольшое дополненение:
С выходом новых версий oscriptweb актуальными стали таки правки в heroku.yaml и Dockerfile.heroku (+свежая инструкция по сборке своего образа)

https://gist.github.com/k2589/abe93775f2d631b6ee9b982cc9dd79dc
6. pallid 273 20.11.19 16:31 Сейчас в теме
(5) Спасибо, добавил информацию в статью
Оставьте свое сообщение