在构建和启动容器之后,我试图启动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
答案 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