Jim*_*tez 10 systemd docker ubuntu-15.04
我有一个 docker-compose 项目,我想通过 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
Run Code Online (Sandbox Code Playgroud)
(以上改编自这里)
但是,我现在在运行 Ubuntu 15.04 的 docker 主机上运行,该主机已切换到 systemd。如何将上述内容作为 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
Run Code Online (Sandbox Code Playgroud)
我发现:作者使用了与您类似的方法http://trackless.ca/2015/12/21/docker-compose-meets-systemd/。但另外,他为每个 docker-compose 服务创建了一个 systemd 服务。
您可能会考虑将 docker-compose 文件转换为多个 systemd 服务文件以摆脱 docker-compose 依赖:http : //container-transform.readthedocs.org/ 我使用了这种方法,它适用于简单的设置。
| 归档时间: |
|
| 查看次数: |
10647 次 |
| 最近记录: |