Запуск языкового сервера в Dockerfile: бинарный файл языкового сервера - PullRequest
0 голосов
/ 02 октября 2018

Я создал простой языковой сервер, следуя этому руководству:

http://www.eclipse.org/Xtext/documentation/102_domainmodelwalkthrough.html

На этом сервере у меня есть 5 папок,

org.example.domainmodel
org.example.domainmodel.ide
org.example.domainmodel.tests
org.example.domainmodel.ui
org.example.domainmodel.ui.tests

Теперь мне нужнозапустите этот языковой сервер внутри образа Docker, и для него потребуется бинарный каталог.Какой двоичный каталог из вышеуказанных 5 папок я должен использовать?Реальные языковые серверы, которые я исследовал до сих пор, сильно отличаются от того, что я создал.

1 Ответ

0 голосов
/ 06 ноября 2018

Созданный выше проект, который я создал, используется для разработки плагинов Eclipse.Чтобы создать LS для запуска в Dockerfile, необходимо создать двоичный файл (я использовал fatJar) из проекта Eclipse Xtext, который должен быть создан, как объяснено в этого учебного пособия (должен завершаться только до 'Упаковка LS 'включительно).Обратите внимание, что при упаковке LS достаточно добавить следующий фрагмент кода в файл build.gradle проекта * .ide: -

shadowJar {
    baseName = 'dsl-language-server'
    classifier = null
    version = null
}

После этого родительский проект должен быть собран командой gradle shadowJarв командной строке.Как только это будет сделано, файл .jar будет создан по следующему пути: *.ide/build/libs

Затем вам нужно будет создать отдельный каталог, скопировать и вставить в него папку сборки и создать файл.с именем dockerfile (без расширения файла) и включите в него следующий код: -

FROM barais/eclipse-xtend
ADD build/libs/dsl-language-server-ls.jar dsl-language-server-ls.jar
RUN sudo apt-get install socat
RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y  software-properties-common && \
    add-apt-repository ppa:webupd8team/java -y && \
    apt-get update && \
    echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
    apt-get install -y oracle-java8-installer && \
    apt-get clean
CMD socat TCP4-LISTEN:4417,reuseaddr,fork EXEC:"java -jar dsl-language-server-ls.jar"

Затем создайте этот файл с помощью Docker и отправьте его в свою учетную запись Docker Hub в качестве репозитория.Используйте следующий рецепт для создания нового стека в Eclipse Che для использования принудительного репо из Docker Hub в качестве языкового сервера: -

services:
 dsl-language-server-ls:
  image : <youraccountname>/mydsl
  mem_limit : 1073741824
 dev-machine:
  image : eclipse/ubuntu_jdk8
  mem_limit : 2147483648
  depends_on:
   - dsl-language-server-ls

Отредактируйте необработанную конфигурацию и обновите ее следующим кодом в соответствующем местев конфигурации (Прочтите che doc для получения дополнительной информации: -

"id": "mydsl-ls",
      "internal": "true",
      "type": "ls",
      "languageRegexes": "[ {\"languageId\":\"mydsllang\", \"regex\":\".*\\\\.mydsl$\"}]"

Создайте файл в новом проекте в Eclipse Che с добавленным вами расширением файла (.mydsl) иLS начнет работать, что позволит вам написать код в вашем DSL.

Yay!

...