Cla*_*ent 3 cron docker alpine-linux
我正在尝试运行一个 Node 12.13.0 Alpine Docker 容器,该容器每 15 分钟运行一次脚本。根据Alpine 的 wiki cron 部分,我应该能够在 Dockerfile 中添加一个 RUN 任务来通过以下方式将 crond 作为服务运行:
rc-service crond start && rc-update add crond
Run Code Online (Sandbox Code Playgroud)
然而,这会返回一个错误:
rc-service: service `crond' does not exist
Run Code Online (Sandbox Code Playgroud)
运行一个单独的 Docker 容器只是为了针对这个 Docker 容器运行 cron 任务不是一种选择。这个容器已经非常轻量级了,并没有做太多事情。
这是我的 Dockerfile:
FROM node:12.13.0-alpine
RUN apk add --no-cache tini openrc
WORKDIR /opt/app
COPY script.sh /etc/periodic/15min/
RUN chmod a+x /etc/periodic/15min/script.sh
RUN rc-service crond start && rc-update add crond
COPY . .
RUN chmod a+x startup.sh
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["./startup.sh"]
Run Code Online (Sandbox Code Playgroud)
任何帮助在这里将不胜感激。
问题是一些 Alpine Docker 容器没有安装busybox-initscripts 包。安装后,crond 作为服务运行。我遇到的另一个小问题是,run-parts
执行文件/etc/periodic
夹中文件的命令期望没有扩展名,所以我去掉了它,现在一切正常。
工作 Dockerfile 如下所示:
FROM node:12.13.0-alpine
RUN apk upgrade --available
RUN apk add --no-cache tini openrc busybox-initscripts
WORKDIR /opt/app
COPY runScraper /etc/periodic/15min/
RUN chmod a+x /etc/periodic/15min/runScraper
COPY . .
RUN chmod a+x startup
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["./startup"]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3187 次 |
最近记录: |