首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在CoreOS上将Tomcat 7作为容器内的服务运行

无法在CoreOS上将Tomcat 7作为容器内的服务运行
EN

Stack Overflow用户
提问于 2014-09-29 08:47:30
回答 1查看 1.9K关注 0票数 1

我正在尝试安装tomcat 7在数字海洋CoreOS机器,但面临一些问题,不知道如何解决它们。我遵循以下教程提供的数字海洋,以建立Apache。

https://www.digitalocean.com/community/tutorials/how-to-create-and-run-a-service-on-a-coreos-cluster

我创建了docker容器,并使用以下命令运行它。

代码语言:javascript
复制
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)

代码语言:javascript
复制
sudo apt-get update 
sudo apt-get install tomcat7

然后,我可以创建名为tomcat@.service的服务单元文件。

代码语言:javascript
复制
[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- Etcd @. service,以便使用Etcd注册服务状态,如下所示

代码语言:javascript
复制
[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

我向舰队提交并加载了文件,如下所示

代码语言:javascript
复制
fleetctl submit tomcat@.service tomcat-discovery@.service

fleetctl load tomcat@8080.service

fleetctl load tomcat-discovery@8080.service

到目前为止一切都很顺利。我没有看到任何错误。但是,当我试图运行服务时,如下所示

代码语言:javascript
复制
fleetctl start tomcat@8080.service

但它并没有开始。我看得出来它已经死了。

我是CoreOS的新手,而且还在学习。我在数字海洋公司管理服务器,我对此相当满意。我在谷歌上搜索了这个问题,但没有找到任何帮助。我个人认为,下面这句话实际上是在制造麻烦。

代码语言:javascript
复制
ExecStart=/usr/bin/docker run –name tomcat%i -p ${COREOS_PUBLIC_IPV4}:%i:8080 attacomsian/tomcat `service tomcat7 start` -D FOREGROUND

我真的很感激你能帮我把这件事搞清楚。

非常感谢

阿塔科姆

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-29 09:31:49

所以我建议你看看别人做了什么,然后发现你在码头枢纽登记处上发布了一个类似的问题。

你有没有看过由tutum/tomcat图像所使用的Docker文件?

它运行一个名为"run.sh“的脚本,在前台运行tomcat。

需要理解的是,Docker不是虚拟机,因此没有运行任何服务。您必须显式地运行停靠程序进程,或者设置像runit或supervisord这样的进程管理器。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26095849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档