在CoreOS中启动依赖单元

时间:2015-01-18 14:26:12

标签: docker coreos

我希望使用Docker的官方wordpress和mysql图像在CoreOS上部署Wordpress。我可以成功启动MySql单元,但是,Wordpress单元无法启动。

这是MySQL的单位文件:

[Unit]
Description=MySQL DB
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=30
ExecStartPre=-/usr/bin/docker kill mysql1
ExecStartPre=-/usr/bin/docker rm mysql1
ExecStartPre=/usr/bin/docker pull mysql
ExecStart=/usr/bin/docker run --rm --name mysql1 -e MYSQL_ROOT_PASSWORD=mysecretpassword mysql
ExecStop=/usr/bin/docker stop mysql1

[X-Fleet]
Conflicts=mysql@*.service

这是Wordpress的单元文件:

[Unit]
Description=My Wordpress
BindsTo=mysql@%i.service
After=mysql@%i.service

[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill wordpress1
ExecStartPre=-/usr/bin/docker rm wordpress1
ExecStartPre=/usr/bin/docker pull wordpress
ExecStart=/usr/bin/docker run --rm --name wordpress1 --link mysql1:mysql -p 8080:80 wordpress
ExecStop=/usr/bin/docker stop wordpress1

[X-Fleet]
MachineOf=mysql@*.service

我按照CoreOS doc上的教程来提出这样的配置。

我尝试删除BindsTo指令,但它没有帮助。我尝试不使用MachineOf,而是使用Conflict指令,但没有任何改变。没有创建单位,也没有输出。命令fleetctl start wordpress@1.service只是立即返回。

如果您能帮助我了解我的配置有什么问题,以及是否有更好的方法来构建这样的配置,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

你能告诉舰队启动两个单位吗?

fleetctl start wordpress@1.service mysql@1.service

如果您需要更多调试信息,fleetctl --debug start可能会有一些线索,journalctl --since today -u fleet

答案 1 :(得分:0)

感谢Rob的回答,我发现wordpress单元已经启动,但卡在无限的启动循环中。原因是因为在wordpress单元文件的最后一行,我应该MachineOf=mysql@%i.service而不是MachineOf=mysql@*.service。错字使得该服务试图找到具有这种描述的服务但不能的服务器。