构建和建立Docker容器时如何启动cron和超级用户等服务?

时间:2018-08-01 17:46:38

标签: docker ubuntu docker-compose supervisor

在构建和启动容器之后,我试图启动cron和supervisor之类的服务,但是这些服务无法启动,我需要手动执行容器内的命令。

我的意图是,一旦容器上升,这些服务就已经在运行。

我创建了一个外壳脚本,该脚本可用于Caddy Web Server启动,但不适用于其他服务。

我的init-services.sh

 $Name= "'".$row['Name']."'";
  $Val1= "'".$row['Val1']."'";
  $Year= "'".$row['Year']."'";
  $Month="'".$row['Month']."'";

 echo '<button type="button"   onclick="fun('.$Id.','.$Val1.','.$Year.','.$Month.','.$Id.');"  >submit</button>'; 

我的Dockerfile的一部分

#!/bin/sh

/usr/bin/caddy --conf /etc/Caddyfile --log stdout
service supervisor start
service cron start

1 个答案:

答案 0 :(得分:0)

您可以通过在运行命令(CMD)中以前台模式运行主管来实现此目的。

首先使用必需的服务创建supervisord.conf。还需要以nodaemon模式(即前台模式)启动所有服务。例如,如果要启动apache服务器,则需要在supervisord.conf中设置如下的-D标志;
command=/bin/bash -c "/usr/local/bin/gosu root /sbin/httpd -D FOREGROUND"


您需要按如下所示在Dockerfile中复制这个supervisord.conf文件;
COPY supervisord.conf /etc/supervisord.d/supervisord.conf


之后,您可以在init-services.sh文件中以前台模式启动受监管的服务,如下所示;
/usr/bin/supervisord -c /etc/supervisord.d/supervisord.conf -n