gpt4 book ai didi

postgresql - postgresql 中的 cron :alpine docker container

转载 作者:行者123 更新时间:2023-11-29 11:56:17 25 4
gpt4 key购买 nike

我正在使用“普通”postgresql:alpine docker 镜像,但必须每天安排一次数据库备份。我认为这是一项非常常见的任务。

我创建了一个脚本backup并存储在/etc/periodic/15min 的容器中,并使其可执行:

bash-4.4# ls -l /etc/periodic/15min/
total 4
-rwxr-xr-x 1 root root 95 Mar 2 15:44 backup

我尝试手动执行它,效果很好。

我的问题是让 crond 自动运行。

如果我执行 docker exec my-postgresql-container crond,守护进程启动并且 cron 工作,但是我想将它嵌入到我的 Dockerfile 中

FROM postgres:alpine

# my backup script, MUST NOT have .sh extension
COPY backup.sh /etc/periodic/15min/backup
RUN chmod a+x /etc/periodic/15min/backup

RUN crond # <- doesn't work

我不知道如何重写或覆盖官方镜像中的命令。出于更新原因,如果可能的话,我也想保留这些图片。

最佳答案

Note: This option if you would like to use the same container with multiple service

安装 Supervisord这将使您能够运行 crondpostgresqlDockerfile 将如下所示:

FROM postgres:alpine
RUN apk add --no-cache supervisor
RUN mkdir /etc/supervisor.d
COPY postgres_cron.ini /etc/supervisor.d/postgres_cron.ini
ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]

postgres_cron.ini 将如下所示:

[supervisord]
logfile=/var/log/supervisord.log ; (main log file;default $CWD/supervisord.log)
loglevel=info ; (log level;default info; others: debug,warn,trace)
nodaemon=true ; (start in foreground if true;default false)

[program:postgres]
command=/usr/local/bin/docker-entrypoint.sh postgres
autostart=true
autorestart=true

[program:cron]
command =/usr/sbin/crond -f
autostart=true
autorestart=true

然后您可以启动 docker 构建过程并从您的新镜像运行一个容器。根据需要随意修改 Dockerfilepostgres_cron.ini

关于postgresql - postgresql 中的 cron :alpine docker container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49074458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com