Как запустить crond от имени пользователя без полномочий root в DockerFile - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь добавить 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?

...