我正在使用postgres:latest映像,并使用以下命令创建备份
pg_dump postgres -U postgres > /docker-entrypoint-initdb.d/backups/redmine-$(date +%Y-%m-%d-%H-%M).sql
,它使用crontab定期运行
*/30 * * * * /docker-entrypoint-initdb.d/backup.sh
但是,有时候我可能需要跑步
docker-compose down/up
出于任何原因
问题
每当我重新启动容器时,我总是需要手动运行/etc/init.d/cron start
。这有点问题,因为很难记住要执行的操作,而且如果我(或其他任何人)忘记了此操作,将无法进行备份
根据文档,*.sql
中以*.sh
和/docker-entrypoint-initdb.d/
结尾的脚本在容器启动时运行(确实如此)
但是,如果我将/etc/init.d/cron start
放在可执行文件.sh
中,则该文件中的其他命令都会执行,并且我已经验证了这一点。但是cron服务无法启动,可能是因为可执行文件中的/etc/init.d/cron start
无法成功执行
如果有解决方案的建议,我将不胜感激
答案 0 :(得分:2)
您将希望使docker容器尽可能独立于其他服务,我建议您不要在容器中运行cronjob,而是在主机上运行它,这样即使重新启动容器,它也将运行(自动或手动天气)。
如果您真的很需要它,我将以postgres图像为基础构建一个新图像,然后从那里开始添加cron,这样它就可以从一开始就位于容器中,而无需任何其他脚本。甚至创建另一个映像只是为了调用cronjob并通过docker网络连接。
答案 1 :(得分:1)