Развертывание веб-приложения Начальной загрузки Spring как услуга к Ubuntu

У меня есть приложение Начальной загрузки Spring, которое я хочу начать использовать System V Init. Мой файл банки находится в /var/my-app/my-app-0.0.1-SNAPSHOT.jar. Так, я создал символьную ссылку с помощью команды ниже

sudo ln -s /var/my-app/my-app-0.0.1-SNAPSHOT.jar /etc/init.d/my-app-0.0.1-SNAPSHOT

без любой проблемы. Однако, когда я пробую

sudo service my-app-0.0.1-SNAPSHOT start

Я получаю ошибку:

/etc/init.d/my-app-0.0.1-SNAPSHOT: 1: /etc/init.d/myapp-0.0.1-SNAPSHOT: Syntax error: Unterminated quoted string

У кого-либо есть идея, что я делаю неправильно?Спасибо.

0
задан 23 January 2018 в 05:38

2 ответа

В случае, если это могло бы помочь кому-то еще в будущем, мне удалось заставить это работать с помощью upstart. Исходный ответ может быть найден здесь.

Я собираюсь скопировать и вставить ответ Patrk Bego здесь для удобства:

Необходимо будет сначала определить Новомодный сценарий (в случае Ubuntu 14.04), это находится в/etc/init/и заканчивающийся в .conf. (http://upstart.ubuntu.com/cookbook/)

# <service name>.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program

в случае Ubuntu 16.06 + (можно найти хорошую статью здесь),

sudo vim /etc/systemd/system/my-webapp.service

Затем можно выполнить его как:

sudo service <your service name> start

Надежда, которая помогает.

0
ответ дан 31 October 2019 в 03:42

Ubuntu использует systemd. Можно найти сообщение кого-то задающего подобный вопрос в этом сообщении

Другой подход должен был бы использовать некоторый инструмент оркестровки как kubernetes или рой докера для создания сервисов, которые могут повторно выполнить сервис, даже если он перестал работать в какой-то момент времени.

Пример с докером:

В Вашем Dockerfile

FROM java:8-jre-alpine
COPY /location/of/your/jar/xyz.jar /where/you/want/it/stored/xyz.jar
CMD ["/bin/sh", "-c", "java -jar /where/you/want/it/stored/xyz.jar"] 

Создайте свое изображение докера

docker build \
   -t my-app:0.0.1-snapshot \ #specify a name for your image
   /dockerfile/location/      # the location of your dockerfile

Протестировать

docker run -it \           # -it represents interactive tty
   -p 80:8080 \            # -p binds 8080 (the container port) to 80 (host port)
   --restart=always \      # --restart=always run the service unless stopped by user
   --name my-app \         # --name the name of your container
   my-app:0.0.1-snapshot   # the image you built with the build command

Тест с почтальоном или браузером к Вашему localhost. Можно попытаться перезапустить компьютер, и приложение должно все еще работать. В производстве Вы использовали бы рой или kubernetes.

Для использования роя Вы создаете a docker-compose.yml файл и Вы должны сохранить Ваши изображения на реестре - созданное изображение должно существовать на руководящем узле, если это не продвинуто к реестру.

В Вашем docker-compose.yml

version: '3.5'
services:
  my-app:
    image: my-app:0.0.1-snapshot
    ports: 
      - "80:8080"
    restart: always

В терминале:

docker swarm init
docker stack deploy my-app --compose-file ./docker-compose.yml

Необходимо проверить их документацию для других вопросов как персистентность и безопасность.

3
ответ дан 31 October 2019 в 03:42

Другие вопросы по тегам:

Похожие вопросы: