首页 > 解决方案 > 如何在容器启动时启动自定义脚本和 cron

问题描述

我为 cron 作业(脚本 backup.sh)创建了一个 docker 映像——它将文件复制到远程服务器进行备份。但首先 - 当容器启动时,我需要创建 ssh 密钥并将其添加到远程服务器上的 authorized_keys 中,这样我就可以通过 rsync 进行连接。

我不知道如何在容器启动时执行两项任务 - 启动脚本 authorize.sh 和 cron

Dockerfile

FROM alpine:3.6

RUN apk update; \
    apk upgrade;

RUN apk add bash openssh-client sshpass rsync

RUN mkdir -p /var/export/

COPY backup.sh /usr/local/bin/backup.sh
RUN chmod +x /usr/local/bin/backup.sh

RUN echo '0 */8 * * *   /usr/local/bin/backup.sh' > /etc/crontabs/root

WORKDIR /var/export/

CMD ["crond", "-f", "-d", "8"]

标签: bashshelldockercron

解决方案


这就是 Docker 的工作方式,当 CMD 命令完成时,容器将停止。

您可以添加某种loop或某些命令,这些命令不会在您的authorize.shsomthing 结束时完成,例如:

tail -f /dev/null

推荐阅读