Я использовал следующий файл определения службы для настройки службы 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 для управления док-контейнером?