У меня есть определение службы, которая запускает Docker-контейнер с помощью systemd в CentOS 7:
[Unit]
Description=MappingService
After=portal.service
Requires=docker.service
[Service]
TimeoutStartSec=3000
Type=forking
WorkingDirectory=/home/user/Downloads/MS_0.3.4_artifact
ExecStartPre=-/bin/docker rm -f eb-mapping-service-container
ExecStartPre=/home/user/Downloads/MS_0.3.4_artifact/deploy.sh /home/user/Downloads/MS_0.3.4_artifact/eb-mapping-service.tgz
ExecStartPre=/bin/docker run -v /dev/log:/dev/log -d -ti --log-driver=journald --network=bridge -p 9090:9090 --name eb-mapping-service-container eb-mapping-service /bin/bash -c "cd /build/MappingService; ./start_multiple_clients_mapping_service.sh"
ExecStart=/bin/docker start -a eb-mapping-service-container
ExecStop=/bin/docker stop eb-mapping-service-container
[Install]
WantedBy=multi-user.target
Эта служба работает.Контейнер Docker запускается.Всякий раз, когда я загружаю компьютер, он работает.Моя проблема с этим сервисом заключается в том, что он никогда не достигает статуса Активный (Работает).Вместо этого он застревает в состоянии «Активация (запуск)».Сценарий 'start_multiple_clients_mapping_service.sh' запускает сервер node.js и начинает прослушивание, поэтому он не выходит напрямую.
Я искал везде и искал документацию Докера по этому поводу и не смог найти ответ.
Кроме того, если я удалю '-a' из команды запуска докера, то статус будет Неактивен (мертв), даже если контейнер будет запущен и работает.Обновление: через некоторое время у меня нет точного номера, служба перестает работать по причине тайм-аута.Это не через 3000 секунд, а намного раньше. Хотя обслуживание не удалось, докер все еще находится в эфире и может использоваться .
Я подтвердил с помощью docker container ls
Вопрос:
Как сделатьЯ изменил свое определение сервиса, чтобы отразить активный (работающий) статус для докера?