我正在尝试schedule在Alpine容器中的一些提取作业。我花了一段时间了解为什么我的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