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

Публикация № 892146

Разработка - Языки и среды - OneScript

heroku oscript oscriot.web

Развертывание 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

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Дата
6. pallid 245 20.11.19 16:31 Сейчас в теме
(5) Спасибо, добавил информацию в статью
5. karimshakirov 20.11.19 15:57 Сейчас в теме
Небольшое дополненение:
С выходом новых версий oscriptweb актуальными стали таки правки в heroku.yaml и Dockerfile.heroku (+свежая инструкция по сборке своего образа)

https://gist.github.com/k2589/abe93775f2d631b6ee9b982cc9dd79dc
4. pallid 245 21.12.18 08:45 Сейчас в теме
Для 1с'ника писать на нем гораздо проще веб приложения чем на OneScript


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

хотя и в ос.вебе мвс патерн не всем заходит
3. 🅵🅾️🆇 487 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
2. Evil Beaver 7009 20.12.18 19:23 Сейчас в теме
(1) вообще ничего? Или html+css+go все-таки придется?
1. 🅵🅾️🆇 487 20.12.18 18:26 Сейчас в теме
Я не сколько не преуменьшаю вклад и академическую ценность OneScript, но это очень сомнительное решение для веб приложения)
Советую попробывать Go + Gin, свое приложение вы сделаете за день, там даже учить ничего не надо.
DAAbramov; Soloist; +2 Ответить 1
Оставьте свое сообщение

См. также

reperr - автоматическая регистрация ошибок для 8.3.17+

Управление задачами OneScript v8 Бесплатно (free)

Представляю вашему вниманию приложение для автоматической регистрации и обработки ошибок, которые возникают при работе в информационных базах на платформе 1С:Предприятие 8.3.17+

04.02.2021    5275    ovcharenko.di    4    

Смена паролей всем локальным пользователям Windows с помощью OneScript

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

Скрипт, который меняет пароли всем локальным пользователям Windows и сохраняет их в файле. Есть функция генерации пароля, можно задать длину пароля.

18.08.2020    833    info1i    7    

Swagger для 1С.

OneScript WEB Бесплатно (free)

Решение для формирования Swagger спецификаций, описывающих HTTP сервисы конфигураций 1С.

21.10.2019    15335    botokash    48    

Автоматическое сравнение-объединение баз данных с мини-конфигурацией

OneScript v8 Бесплатно (free)

Представляю вашему вниманию скрипт на OneScript для автоматического сравнения-объединения по правилам ("мержевания") конфигураций нескольких баз с мини-конфигурацией.

14.10.2019    3264    artkor    2    

АИТП. Подсистема взаимодействия с рабочими серверами OneScript

OneScript v8 Бесплатно (free)

В статье описан механизм взаимодействия конфигурации АИТП с рабочими серверами OneScript.

22.05.2019    5609    blackhole321    33    

1Script.Web. Интернет-приложения на языке 1С

WEB OneScript Инструментарий разработчика v8 Бесплатно (free)

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

20.05.2019    21561    Evil Beaver    33    

Создание высокодоступной фермы рабочих серверов OneScript в ОС Centos 7

OneScript Бесплатно (free)

В статье описана методика создания высокодоступной фермы рабочих серверов OneScript, для конфигурации АИТП.

14.05.2019    4955    blackhole321    0    

Разворачиваем рабочий сервер OneScript для конфигурации АИТП

OneScript v8 Бесплатно (free)

В статье описана методика развертывания рабочего сервера OneScript для конфигурации АИТП, на ОС CentOS 7.

09.05.2019    6505    blackhole321    0    

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

OneScript Бесплатно (free)

Удобная возможность для размещения своего OneScript.Web приложение, это завернуть его в docker. Остается вопрос: где разместить контейнер, сделать это можно на vscale или DO, но хочется упростить и не делать установку самого docker на хосте. Один из вариантов - это сервис now https://zeit.co/.

04.07.2018    7968    pallid    3    

Добавляем онлайн-чат в web-приложение OneScript

OneScript v8 Бесплатно (free)

В статье рассмотрено подключение онлайн-чата к web-приложению на основе http-сервисов OneScript

24.06.2018    7794    blackhole321    1    

Сказ про то, как я DevOps-ом занимался (OneScript, Deployka, Jenkins)

OneScript DevOps Jenkins v8 1cv8.cf ИТ-компания Бесплатно (free)

Решаем задачу: автоматизировать обновление тестовых баз 1С из хранилища конфигурации при появлении в нём новых изменений. Данная статья родилась в муках хождения по граблям и поиска безопасного форватора среди подводных камней. Изложение постарался представить в виде инструкции для новичка, в которой собрал всё, с чем пришлось столкнуться. Сам я не DevOps-ер, ни на что не претендую, просто делюсь опытом :)

17.06.2018    23774    stas_ganiev    36    

Макеты в http-сервисах OneScript

OneScript v8 Бесплатно (free)

В статье описана библиотека, реализующая механизм макетов в http-сервисах OneScript, аналогично платформе 1С:Предприятие.

03.06.2018    8616    blackhole321    1    

Перечисления в http-сервисах OneScript

OneScript v8 Бесплатно (free)

В статье описывается библиотека, реализующая механизм перечислений в http-сервиах OneScript, аналогичный механизму платформы 1С:Предприятие

03.06.2018    8121    blackhole321    13    

Обработки в http-сервисах OneScript

OneScript Бесплатно (free)

В статье описана библиотека, реализующая механизм обработок в http-сервисах OneScript.

25.05.2018    7781    blackhole321    0    

Расширенные методы загрузки внешних библиотек в http-сервисах OneScript

OneScript Бесплатно (free)

В статье описаны расширенные методы загрузки внешних библиотек в http-сервисах OneScript на примере механизма фоновых заданий.

25.05.2018    7735    blackhole321    0    

Сборка, тестирование, доставка приложения на onescript с помощью gitlab-ci

OneScript v8 1cv8.cf Бесплатно (free)

Сборка, тестирование, доставка приложения на onescript с помощью gitlab-ci на примере портирования на onescript функции daСклонение.

14.05.2018    13615    pallid    7    

OneScript в облаке или Развертываем http-сервис OneScript на хостинге

OneScript Бесплатно (free)

В статье описан процесс развертывания web-приложения, созданного на базе http-сервисов OneScript на бесплатном хостинге.

05.05.2018    9881    blackhole321    0    

TMSSQL - работа с базами данных MS SQL Server в скриптах на OneScript и из командной строки

OneScript v8 Бесплатно (free)

Представляю вашему вниманию библиотеку TMSQL для работы с базами данных на MS SQL Server. Библиотека подключается в качестве модуля или класса в скрипты, написанные на OneScript, а также может работать как независимое консольное приложение.

26.04.2018    15325    Tavalik    22    

Развертывание http-сервиса OneScript на Raspberry Pi

OneScript Бесплатно (free)

В статье описан процесс настройки, а также процесс развертывания http-сервиса (web-приложения) OneScript на Raspbian (Raspberry Pi 2).

23.04.2018    11440    blackhole321    10    

Создаем свою библиотеку для OneScript

OneScript v8 Бесплатно (free)

Как упаковать свою библиотеку в пакет? Что такое загрузчик и зачем он нужен? Как вообще создать свою библиотеку? Разбираемся на примере.

06.03.2018    23275    nixel    36    

Развертывание http-сервиса (web-приложения) OneScript на Ubuntu Server 16.04

OneScript Бесплатно (free)

В статье описан процесс настройки сервера, а также процесс развертывания http-сервиса (web-приложения) OneScript на Ubuntu Server 16.04

04.03.2018    16144    blackhole321    14    

Обзор имеющихся библиотек OneScript

OneScript v8 Бесплатно (free)

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

14.11.2017    47701    nixel    87    

Начало работы с OneScript

OneScript Бесплатно (free)

Краткая инструкция по установке и начале работы с OneScript. Пишу потому что сам много шишек набил, пока нашел все инструменты. В статье рассмотрены: 1) Установка OneScript. 2) Установка редактора кода. 3) Настройка редактора кода под OneScript. 4) Запуск скриптов из редактора кода 5) Полезные ссылки

18.10.2017    48465    DmitrySinichnikov    54    

С чего начать разработку скриптов на OneScript? Первые шаги

OneScript Бесплатно (free)

После моего доклада на INFOSTART 2017 EVENT COMMUNITY ко мне многие обращались с таким вопросом: с чего начать разработку скриптов на OneScript? В этой статье привожу набор ссылок и некий порядок действий (как его вижу я) для людей, не знакомым с этим инструментом.

11.10.2017    26585    Tavalik    14    

Вебинтерфейс для OneScript и 1С

OneScript v8 Россия Бесплатно (free)

Пример создания вебинтерфейса для OneScript с использованием библиотеки UfaScript.osb

30.06.2017    14116    andreosh    7    

OneScript и Ajax. POST-запрос и мои дальнейшие планы с фантазиями о будущем

OneScript v8 Россия Бесплатно (free)

Моя библиотека для OneScript (версия 3.0 от 09.06.2017 см.GitHab UfaScript) https://github.com/andreosh/UfaScript теперь позволяет посылать POST-запросы на сервер без использования сторонних библиотек типа jquery.

09.06.2017    18119    andreosh    3    

Как сделать OneScript объектно-ориентированным

OneScript Россия Бесплатно (free)

Описание метода создания объектов на OneScript и метода передачи функции в качестве параметра.

16.04.2017    8597    andreosh    7