Как включить сервер на локальном языке в файл докеров и создать из него образ докера?

Мне нужно запустить сервер на местном языке в качестве контейнера докеров, включив его в файл докеров. Я построил простой языковой сервер, следуя только разделу «Предоставление языкового сервера Xtext». Это Dockerfile, который я написал для создания образа:

FROM eclipse/che
ADD xtextls3 C:\Users\abc\xtext_ls3
RUN sudo apt-get install socat -y
CMD socat TCP4-LISTEN:4417,reuseaddr,form EXEC:"xtextls"

Я не знаю, правильно ли это. «xtextls3» — это папка рабочей области eclipse, которую я использовал для создания своего языкового сервера. Когда я пытаюсь создать этот файл докеров, я получаю эту ошибку: Ошибка добавления: stat /var/lib/ docker/tmp/docker-builder342449789/xtextls3

Как правильно включить мой языковой сервер в файл докера и создать из него образ докера?


person SharkJ    schedule 02.10.2018    source источник


Ответы (2)


Я мог бы подумать, что проблема кроется в строке ADD. Это добавит локальный файл xtextls3 к вашему слою. Однако файл не может быть найден. У меня есть идея, что вы должны поменять местами первый и второй аргумент в инструкции ADD.

person Mikki    schedule 02.10.2018
comment
Это не сработало. Я предполагаю, что это требует другого пути. Думаю, в ОС Linux я должен использовать домашний каталог. Что такое домашняя папка в ОС Windows? - person SharkJ; 03.10.2018
comment
Ошибка довольно четко показывает, что xtextls3 не может быть найдено в первом аргументе вашей инструкции ADD. Я думаю, что проблема больше в этой части, чем в конце изображения. - person Mikki; 04.10.2018
comment
Ты прав. Я, наконец, решил ошибку, и я упомянул свой ответ ниже. Спасибо за помощь! - person SharkJ; 04.10.2018

Кажется, я должен указать путь относительно каталога контекста (текущее местоположение, в котором я нахожусь в командной строке). Я поместил свой файл .jar в ту же папку, где находится файл Dockerfile, и изменил содержимое файла Dockerfile следующим образом:

FROM barais/eclipse-xtend
ADD build/libs/dsl-language-server-ls.jar dsl-language-server-ls.jar
RUN sudo apt-get install socat
CMD socat TCP4-LISTEN:4417,reuseaddr,fork EXEC:"mydsl"

«build/libs/dsl-language-server-ls.jar» — это путь+файл, а «dsl-language-server-ls.jar» — это двоичный файл, который мне нужен.

person SharkJ    schedule 04.10.2018