在高山容器中启用crond

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在高山容器中启用crond相关的知识,希望对你有一定的参考价值。

上下文

我正在尝试scheduleAlpine容器中的一些提取作业。我花了一段时间了解为什么我的cron作业没有启动:crond似乎没有运行

rc-service -l | grep crond 

根据Alpine's documentation,必须先以openrc(即某种systemctl)开始crond。这是Dockerfile

FROM python:3.7-alpine

# set work directory
WORKDIR /usr/src/collector

RUN apk update 
    && apk add curl openrc

# ======>>>> HERE !!!!! 
RUN rc-service crond start && rc-update add crond

# install dependencies
RUN pip install --upgrade pip
RUN pip install pipenv
COPY ./Pipfile /usr/src/collector/Pipfile
RUN pipenv install --skip-lock --system --dev

# copy entrypoint.sh
COPY ./entrypoint.sh /usr/src/collector/entrypoint.sh

# copy project
COPY . /usr/src/collector/

# run entrypoint.sh
ENTRYPOINT ["/usr/src/collector/entrypoint.sh"]

[entrypoint.sh仅将作业附加在/etc/crontabs/root的末尾

问题

我遇到以下错误:

 * rc-service: service `crond' does not exist
ERROR: Service 'collector' failed to build: The command '/bin/sh -c rc-service crond start && rc-update add crond' returned a non-zero code: 1

事物开始变得有点循环感。 rc-service如何同时无法识别服务:

  • [sh似乎知道名字crond

  • [/etc/crontabs/root

    ]

我想念什么?

答案

某些阿尔卑斯Docker容器缺少busybox-initscripts package。只需将其附加到apk add命令的末尾,crond应该作为服务运行。

您可能还需要从Dockerfile中删除以下行,因为似乎busybox-initscripts在安装后立即将crond作为服务运行:

RUN rc-service crond start && rc-update add crond

以上是关于在高山容器中启用crond的主要内容,如果未能解决你的问题,请参考以下文章

sh 构建并安装cmd文件夹中的所有内容,以便在高山容器中使用

高山 docker 容器中简单 OpenCV 程序的链接器错误

是否可以在具有高山风味的 docker 容器内构建 AOSP?

在 webview_flutter 中启用捏合和缩放,在哪里添加代码片段 [this.webView.getSettings().setBuiltInZoomControls(true);]

如何在 Docker 容器中以非 root 用户身份启动 cron?

高山 | 2021软件代码开发技术作业五 | 代码开发测试及发布