Как настроить докер-контейнер как сервис systemd? - PullRequest
0 голосов
/ 14 февраля 2019

Я использовал следующий файл определения службы для настройки службы systemd.

[Unit]
Description=MappingService
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=3000
WorkingDirectory=/home/oren/MappingService
ExecStartPre=-/usr/bin/sudo /home/oren/MappingService/deploy.sh /home/oren/MappingService/eb-mapping-service.tgz
ExecStart=/usr/bin/sudo /home/oren/MappingService/ebms_run.sh
Type=simple

[Install]
WantedBy=multi-user.target

Цель этой службы - запустить определенный док-контейнер.Операция выглядит успешной, так как докер появляется в:

docker container ls

, он прослушивает порт 9090, и мне удалось проверить, открыт ли порт с помощью nmap.

, но когда я проверяюстатус службы в systemctl, (systemctl status mappingservice.service)
Я становлюсь неактивным (мертвым), как показано ниже.

● mappingservice.service - MappingService Загружен: загружен (/ etc / systemd / system / mappingservice).service; включено; предустановка поставщика: включена) Активен: неактивен (мертв) с Чт 2019-02-14 14:54:20 IST;20 минут назад Процесс: 1784 ExecStart = / usr / bin / sudo /home/oren/MappingService/ebms_run.sh (код = выход, статус = 0 / УСПЕХ) Процесс: 1323 ExecStartPre = / usr / bin / sudo / home / oren /MappingService / deploy.sh /home/oren/MappingService/eb-mapping-service.tgz (code = exited, status = 0 / SUCCESS)

Я искал здесь подсказки, и я тольконашел ссылки на использование systemd реальной службы докера, а не конкретного контейнера, как я пытаюсь сделать здесь.

Содержимое ebms_run.sh:

#!/bin/bash -x

source defs.sh

DOCKER_PARAMS="-v /dev/log:/dev/log -d --log-driver=journald --add-host=<server1-alias1>:172.17.0.1 --add-host=<server1-alias2>:172.17.0.1 --network=bridge -p 9090:9090 --name ${DOCKER_CONTAINER_NAME}"


docker rm -f ${DOCKER_CONTAINER_NAME}
docker run ${DOCKER_PARAMS} ${DOCKER_IMAGE_NAME} /bin/bash -c "cd /build/MappingService; ./start_multiple_clients_mapping_service.sh 

Скрипт start_multiple_clients_mapping_service.sh выполняется внутри контейнера док-станции и фактически является непрерывным.Он не умрет, пока не умрет докер.

Вопрос:
Как мне настроить службу systemd для управления док-контейнером?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...