আমার কাছে একটি ডকার-রচনা প্রকল্প রয়েছে যা আমি সিস্টেমডের মাধ্যমে নিয়ন্ত্রণ করতে চাই। আপস্টার্টে, আমি এমন স্ক্রিপ্ট ব্যবহার করব যা দেখতে এরকম দেখাচ্ছে:
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 চালায়, যা সিস্টেমডে স্যুইচ করেছে। সিস্টেমড সার্ভিস স্ক্রিপ্ট হিসাবে আমি কীভাবে উপরেরটি করতে পারি? কেবল ডকার-কমপোজ ডেমন চালু করা ব্যর্থতার ক্ষেত্রে সিস্টেমেডটিকে ট্র্যাক এবং পুনরায় আরম্ভ করার অনুমতি দেবে না।
আমার এখন পর্যন্ত যা আছে তা এখানে:
[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