如何在DockerFile中以非root用户身份运行crond

时间:2019-04-03 18:41:50

标签: cron dockerfile

我试图将crontab添加到我的Docker容器中,但是由于安全法规的原因,我无法将USER保留为root。使用下面的Dockerfiel,该crond以用户应用程序启动,而crontab永不触发。

当以root用户身份使用时,一切都会按预期进行,但是将用户更改为app将使crond从用户应用程序启动,这是(我认为)问题所在。我尝试了How to start crond as non-root user in a Docker Container?,但这无济于事。

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

我相信以root身份运行crond可以解决我的问题,但是也许有更好的方法可以完全做到这一点。有什么方法可以通过Dockerfile强制crond以root身份启动?或者我可以以某种方式以非root身份运行crond?

0 个答案:

没有答案