Я пытаюсь добавить crontab в свой контейнер Docker, но я не могу оставить пользователя USER от имени root из-за правил безопасности. Используя приведенный ниже Dockerfiel, crond запускается как пользовательское приложение, и crontab никогда не запускается.
Когда пользователь остается пользователем root, все работает как положено, но смена пользователя на app приводит к запуску crond в качестве пользовательского приложения, которое (я думаю), где проблема. Я пытался Как запустить crond от имени пользователя без полномочий root в контейнере Docker? , но это не помогает.
FROM alpine:3.9
ADD https://storage.googleapis.com/kubernetes-release/release/v1.6.4/bin/linux/amd64/kubectl /usr/local/bin/kubectl-binary
RUN chmod +x /usr/local/bin/kubectl-binary
COPY kubectl-retry-with-backoff.sh /usr/local/bin/kubectl
RUN chmod +x /usr/local/bin/kubectl
RUN apk add --no-cache bash sed curl redis=4.0.12-r0 ca-certificates su-exec shadow \
&& rm -rf /var/cache/apk/*
ADD crontab /etc/cron.d/delete-rdb
COPY delete_rdb.sh /usr/local/bin/delete_rdb.sh
COPY launcher.sh /usr/local/bin/launcher.sh
RUN chmod +x /usr/local/bin/delete_rdb.sh \
&& chmod 755 /etc/cron.d/delete-rdb \
&& chown -R app:app /etc/cron.d/delete-rdb \
&& chown -R app:app /usr/local/bin/delete_rdb.sh \
&& crontab /etc/cron.d/delete-rdb
ENTRYPOINT [ "bash", "-c" ]
CMD [ "usr/sbin/crond && /usr/local/bin/launcher.sh | tee /var/log/runner.txt" ]
USER app
Я считаю, что запуск crond от имени root решит мои проблемы, но, возможно, есть лучший способ сделать это в целом. Есть ли способ заставить crond запускаться от имени root через Dockerfile? Или я могу запустить crond без полномочий root?