我希望使用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
只是立即返回。
如果您能帮助我了解我的配置有什么问题,以及是否有更好的方法来构建这样的配置,我将不胜感激。
答案 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
。错字使得该服务试图找到具有这种描述的服务但不能的服务器。