Service 如何在Docker上后台启动railo服务

Service 如何在Docker上后台启动railo服务,service,docker,railo,Service,Docker,Railo,我叫庄, 我已经在上面创建了Docker图像 它运行正常。 现在我创建了Dockerfile,但无法启动自动Railo服务。请帮帮我。 我从shell脚本中的一些命令开始: exec /opt/railo/railo_ctl start exec /opt/railo/railo_ctl start -D FOREGROUND service railo_ctl restart exec service railo_ctl restart 没有命令它工作。我查看了您的Dockerfile并确定

我叫庄, 我已经在上面创建了Docker图像 它运行正常。 现在我创建了Dockerfile,但无法启动自动Railo服务。请帮帮我。 我从shell脚本中的一些命令开始:

exec /opt/railo/railo_ctl start
exec /opt/railo/railo_ctl start -D FOREGROUND
service railo_ctl restart
exec service railo_ctl restart

没有命令它工作。

我查看了您的Dockerfile并确定了问题所在

在Dockerfile中只能使用一个CMD。(如果使用多个CMD,旧的将覆盖)更多信息:

您需要知道,Docker不适合在没有一点帮助的情况下运行多个进程。我建议使用supervisord:

您不能在Dockerfile中使用RUN service,原因很简单:将执行命令服务并启动守护程序,然后通知执行成功。临时容器将被终止(守护进程也将终止),然后提交更改

您的Dockerfile应该是什么样子的:

FROM ubuntu:trusty
MAINTAINER Trang Lee <trangunghoa@gmail.com>, Seta International Vietnam(info@setacinq.vn)

#Install base packages
RUN apt-get -y update
RUN apt-get install -y openjdk-7-jre-headless
RUN apt-get install -y tomcat7 tomcat7-admin apache2 libapache2-mod-jk
RUN apt-get purge -y openjdk-6-jre-headless icedtea-6-jre-cacao openjdk-6-jre-lib icedtea-6-jre-jamvm
RUN apt-get install -y supervisor 

# config to enable .htaccess
ADD apache_default /etc/apache2/sites-available/000-default.conf
RUN a2enmod rewrite

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2

# start service 
ADD start-apache2.sh /start-apache2.sh
ADD railo.sh /railo.sh
ADD run.sh /run.sh
RUN chmod +x /*.sh
#RUN sudo service apache2 start


# install railo
RUN apt-get install -y wget
RUN wget http://www.getrailo.org/railo/remote/download42/4.2.1.000/tomcat/linux/railo-4.2.1.000-pl2-linux-x64-installer.run

RUN chmod -R 744 railo-4.2.1.000-pl2-linux-x64-installer.run
RUN ./railo-4.2.1.000-pl2-linux-x64-installer.run --mode unattended --railopass “123456”

# remove railo setup
#RUN rm -rf railo-4.2.1.000-pl2-linux-x64-installer.run

#RUN sudo service railo_ctl start

RUN mkdir -p /etc/service/railo
ADD start-railo.sh /etc/service/railo/run
RUN chmod 755 /etc/service/railo/run


# EXPOSE <port>
EXPOSE 80 8888

#CMD ["/railo.sh"]
#CMD ["/start-apache2.sh"]

# Supervisord configuration
RUN mkdir /var/log/supervisor
ADD ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]

你能详细说明一下你想做什么,以及如何重现你的问题吗?谢谢里根的回复。我已将我的Dockerfile推到我已更改的存储库是我想要更改运行命令:
docker build-t railo dockerhttps://github.com/trangunghoa/railo-docker.git
码头装卸工运行-d-p 80:80 railo docker
集装箱将自动启动railo服务
[supervisord]
nodaemon=true

[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"

[program:railo]
command=/bin/bash -c "exec /opt/railo/railo_ctl start -D FOREGROUND"