Alpine: «сервис` crond 'не существует » - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь запустить контейнер Alpine Docker Node 12.13.0, который запускает скрипт каждые 15 минут. Согласно разделу cron вики Alpine , я должен иметь возможность просто добавить задачу RUN в Dockerfile для запуска crond как службы через:

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

Это, однако, возвращает ошибку:

rc-service: service `crond' does not exist

Запуск отдельного контейнера Docker только для запуска задачи cron для этого контейнера Docker является НЕ опцией. Этот контейнер уже очень легкий и мало что делает.

Вот мой 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"]

Любая помощь здесь будет признательна.

1 Ответ

0 голосов
/ 27 октября 2019

Проблема заключалась в том, что некоторые контейнеры 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"]
...