我正在尝试在Digital Ocean CoreOS机器上设置tomcat 7但面临一些问题,不知道如何解决它们。我正在按照Digital Ocean提供的以下教程来设置Apache。
https://www.digitalocean.com/community/tutorials/how-to-create-and-run-a-service-on-a-coreos-cluster
我创建了docker容器并使用以下命令运行它。
docker run -i -t ubuntu:14.04 /bin/bash
我通过使用以下命令成功安装了tomcat 7。 (我按照本教程在docker容器中设置tomcat 7:https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-7-on-ubuntu-14-04-via-apt-get)
sudo apt-get update
sudo apt-get install tomcat7
然后我可以创建名为tomcat @ .service
的服务单元文件[Unit]
Description=Tomcat 7 web server service
After=etcd.service After=docker.service
Requires=tomcat-discovery@%i.service
[Service]
TimeoutStartSec=0 KillMode=none
EnvironmentFile=/etc/environment
ExecStartPre=-/usr/bin/docker kill tomcat%i
ExecStartPre=-/usr/bin/docker rm tomcat%i
ExecStartPre=/usr/bin/docker pull attacomsian/tomcat
ExecStart=/usr/bin/docker run –name tomcat%i -p ${COREOS_PUBLIC_IPV4}:%i:8080 attacomsian/tomcat `service tomcat7 start` -D FOREGROUND
ExecStop=/usr/bin/docker stop tomcat%i
[X-Fleet]
X-Conflicts=tomcat@*.service
然后我创建了tomcat-discovery @ .service以使用Etcd注册服务状态,如下所示
[Unit]
Description=Announce Tomcat@%i service
BindsTo=tomcat@%i.service
[Service]
EnvironmentFile=/etc/environment
ExecStart=/bin/sh -c “while true; do etcdctl set /announce/services/tomcat%i ${COREOS_PUBLIC_IPV4}:%i –ttl 60; sleep 45; done”
ExecStop=/usr/bin/etcdctl rm /announce/services/tomcat%i
[X-Fleet]
X-ConditionMachineOf=tomcat@%i.service
我提交并将文件加载到Fleet,如下所示
fleetctl submit tomcat@.service tomcat-discovery@.service
fleetctl load tomcat@8080.service
fleetctl load tomcat-discovery@8080.service
到目前为止一切正常。我没有看到任何错误。但是当我尝试按以下方式运行服务时
fleetctl start tomcat@8080.service
但它没有开始。我可以看到它似乎已经死了。
我是CoreOS的新手并且还在学习。我正在管理Digital Ocean的服务器,而且相当不错。我搜索了这个问题,但没有找到任何帮助。我个人认为以下行实际上是造成了麻烦。
ExecStart=/usr/bin/docker run –name tomcat%i -p ${COREOS_PUBLIC_IPV4}:%i:8080 attacomsian/tomcat `service tomcat7 start` -D FOREGROUND
我真的很感激任何帮助来解决这个问题。
非常感谢
Attacomsian
答案 0 :(得分:1)
我这样建议您看看其他人做了什么,然后发现您在Docker Hub registry上发布了类似的问题。
您是否看过tutum / tomcat图像使用的Docker文件?
它运行一个名为" run.sh"的脚本。在前台运行tomcat。
棘手的是,Docker不是虚拟机,因此没有运行任何服务。您必须显式运行docker进程或设置进程管理器,如runit或supervisord。
希望这有帮助。