मेरे पास एक डॉकटर-कंपोज्ड प्रोजेक्ट है जिसे मैं सिस्टमड के माध्यम से नियंत्रित करना चाहूंगा। अपस्टार्ट में, मैं एक स्क्रिप्ट का उपयोग करूंगा जो इस तरह दिखती है:
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
( यहां से ऊपर अनुकूलित )
हालाँकि, मैं अब एक डॉक्यूमर होस्ट पर चल रहा हूं जो Ubuntu 15.04 रन करता है, जो कि सिस्टमड पर स्विच हो गया है। मैं ऊपर दिए गए सिस्टम स्क्रिप्ट के रूप में कैसे कर सकता हूं? बस डॉकटर-कम्पोज डैम को लॉन्च करने से सिस्टमडेल को ट्रैक करने और विफलता के मामले में पुनरारंभ करने की अनुमति नहीं मिलेगी।
यह है, जो कि अभी तक मेरे पास है:
[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