我正在尝试在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
我非常感谢您提供任何帮助。
非常感谢
阿塔科马人
最佳答案
我本来是建议您看看其他人做了什么,然后发现您在Docker Hub registry上发布了类似的问题。
您是否看过tutum / tomcat镜像使用的Docker文件?
它运行一个名为“run.sh”的脚本,该脚本在前台运行tomcat。
难以理解的是,Docker不是虚拟机,因此没有任何服务在运行。您必须显式运行docker进程或设置进程管理器(如runit或supervisor)。
希望这可以帮助。
关于tomcat7 - 无法在CoreOS上的容器内将Tomcat 7作为服务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095849/