【发布时间】:2019-11-13 17:03:47
【问题描述】:
我为 cron 作业创建了一个 docker 映像(脚本 backup.sh)——它将文件复制到远程服务器以进行备份。 但首先 - 当容器启动时,我需要创建 ssh 密钥并将其添加到远程服务器上的 authorized_keys 中,这样我就可以通过 rsync 进行连接。
我不知道如何在容器启动时执行两项任务 - 启动脚本 authorize.sh 和 cron
我尝试在脚本 backup.sh 中调用 authorize.sh,但它总是在多个容器中同时调用,并且这些 ssh 密钥相互覆盖,这就是我需要在容器上执行此操作的原因开始,而不是在 cron 脚本中
我无法在构建映像时调用 dockerfile 中的脚本,因为远程服务器连接是作为环境变量传递的
我试过用 CMD ['crond', '-f', '-d', '8'] 代替 CMD ['authorize.sh', '-f', '-d' , '8'] 并在授权脚本中添加 crond -f,但容器在完成 authorize.sh 后停止
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"]
【问题讨论】:
-
您可以在stackoverflow.com/a/30209974/3220113 阅读更多内容。使用
FROM centos:7有帮助吗?