首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在构建和建立docker容器时,如何启动cron和supervisor等服务?

在构建和建立docker容器时,如何启动cron和supervisor等服务?
EN

Stack Overflow用户
提问于 2018-08-02 01:46:38
回答 1查看 706关注 0票数 0

我试图在容器构建和启动后启动像cron和supervisor这样的服务,但这些服务没有启动,我需要在容器中手动执行命令。

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

我创建了一个shell脚本,它适用于Caddy Server start,但不适用于其他服务。

我的init-services.sh

代码语言:javascript
运行
复制
#!/bin/sh

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

我的Dockerfile的一部分

代码语言:javascript
运行
复制
RUN apt-get update && apt-get install --no-install-recommends -y \
    wget \
    nano \
    git \
    unzip \
    iputils-ping \
    gnupg \
    supervisor \
    cron

COPY .docker/scripts/init-services.sh /usr/bin/init-services

RUN chmod +x /usr/bin/init-services

CMD ["/usr/bin/init-services"]
EN

回答 1

Stack Overflow用户

发布于 2018-08-02 09:34:22

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

首先,创建包含所需服务的supervisord.conf。您还需要在nodaemon模式下启动所有服务,这是前台模式。举个例子,如果你打算启动一个apache服务器,你需要在你的supervisord.conf中设置-D标志,如下所示;

command=/bin/bash -c "/usr/local/bin/gosu root /sbin/httpd -D FOREGROUND"

您需要将此supervisord.conf文件复制到Dockerfile文件中,如下所示;

COPY supervisord.conf /etc/supervisord.d/supervisord.conf

之后,您可以在init-services.sh文件中以前台模式启动supervisord服务,如下所示;

/usr/bin/supervisord -c /etc/supervisord.d/supervisord.conf -n

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

https://stackoverflow.com/questions/51639364

复制
相关文章

相似问题

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