systemd를 통해 제어하려는 도커 작성 프로젝트가 있습니다. 처음에는 다음과 같은 스크립트를 사용합니다.
description "Start/Stop server"
author "Jim Cortez"
start on filesystem and started docker
stop on runlevel [!2345]
respawn limit 3 240
pre-start script
# wait (if necessary) for our docker context to be accessible
while [ ! -f /projects/my_server/docker-compose.yml ]
do
sleep 1
done
/usr/local/bin/docker-compose -f /projects/my_server/docker-compose.yml up -d
end script
script
sleepWhileAppIsUp(){
while docker ps | grep "$1" >/dev/null; do
sleep 2
done
}
sleepWhileAppIsUp "my_server"
end script
# stop docker container after the stop event has completed
post-stop script
if docker ps | grep my_server;
then
/usr/local/bin/docker-compose -f /projects/my_server/docker-compose.yml stop
fi
end script
(위에서 여기에 적응 )
그러나 지금 우분투 15.04를 실행하는 도커 호스트에서 실행 중이며 systemd로 전환되었습니다. 시스템화 된 서비스 스크립트로 위의 작업을 어떻게 수행 할 수 있습니까? docker-compose 데몬을 시작하면 시스템 오류가 발생한 경우 systemd를 추적하고 다시 시작할 수 없습니다.
여기 내가 지금까지 가지고있는 것입니다 :
[Unit]
Description=My Server container
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStart=/usr/local/bin/docker-compose -f /projects/my_server/docker-compose.yml up -d
ExecStop=/usr/local/bin/docker-compose -f /projects/my_server/docker-compose.yml stop
[Install]
WantedBy=local.target